#include<bits/stdc++.h> using namespace std; typedef struct lol { int N; string s; friend bool operator < (const lol &first,const lol &second) { if(first.N==second.N) return first.s<second.s; return first.N>second.N; } }troll; typedef struct state { int link,len; map<char,int> next; }State; int i,n,j,sz,last,now,magic; bool ok; string s,rs,curr_rs; troll a[1000005]; State sa[2000005]; void add_letter(char c) { int now=sz++,p; sa[now].len=sa[last].len+1; for(p=last;p!=-1 && !sa[p].next.count(c);p=sa[p].link) sa[p].next[c]=now; if(p==-1) sa[now].link=0; else { int q=sa[p].next[c]; if(sa[p].len+1==sa[q].len) sa[now].link=q; else { int clone=sz++; sa[clone].next=sa[q].next; sa[clone].len=sa[p].len+1; sa[clone].link=sa[q].link; for(;p!=-1 && sa[p].next[c]==q;p=sa[p].link) sa[p].next[c]=clone; sa[q].link=sa[now].link=clone; } } last=now; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); while(cin>>s) a[++n].s=s,a[n].N=a[n].s.length(); for(magic=1;magic<=10;++magic) { if(magic==1) sort(a+1,a+n+1); else random_shuffle(a+1,a+n+1); for(i=1;i<=n;++i) { for(j=0,ok=1,now=0;j<a[i].N && ok;++j) if(sa[now].next.count(a[i].s[j])) now=sa[now].next[a[i].s[j]]; else ok=0; if(!ok) { curr_rs+=a[i].s; for(j=0;j<a[i].N;++j) add_letter(a[i].s[j]); } } if(magic==1) rs=curr_rs; else if(curr_rs.length()<rs.length()) rs=curr_rs; for(i=0;i<=sz+1;++i) sa[i].next.clear(),sa[i].link=sa[i].len=0; sz=0; last=0; curr_rs.clear(); } cout<<rs<<'\n'; return 0; }