#include<iostream>
#include<cstring>
#include<map>
using namespace std;
int n;
char s1[20],s2[20],s3[20],a[20][20],ans[20],aa[20],bb[20];
int dp[20][20],c[20],len[20];
void inition(){
c[0]=1;
for(int i=1;i<=10;i++)
c[i]=c[i-1]*2;
}
int dpp(int l1,int l2){
for(int i=0;i<l1;i++){
aa[i]=s3[i];
}
for(int i=0;i<l2;i++){
bb[i]=s2[i];
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=l1;i++){
for(int j=1;j<=l2;j++){
if(aa[i-1]==bb[j-1]){
dp[i][j]=dp[i-1][j-1]+1;
}
else{
dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
}
}
}
if(dp[l1][l2]==l2)
return 1;
else
return 0;
}
int subset(int ll){
int cnt=0;
for(int i=2; i<=n; i++){
int start=0;
for(int ii=1;ii<=len[i];ii++){
int k=0;
for(int j=start;j<start+len[i];j++){
s3[k++]=a[i][j];
// cout<<s3[k]<<endl;
}
s3[k]='\0';
start++;
// cout<<s3<<endl;
if(dpp(k,ll)){
cnt++;break;
}
}
}
if(cnt==n-1)
return 1;
else
return 0;
}
int main(){
inition();
// map<int,int>q;
// char a[15][10];
while(cin>>n){
for(int i=1;i<=n;i++){
cin>>a[i];
int l=strlen(a[i]);
for(int j=0;j<l;j++){
a[i][j+l]=a[i][j];
}
len[i]=l;
}
// for(int i=1;i<=n;i++){
// cout<<a[i]<<endl;
// }
// for(int i=1;i<=n;i++){
// cout<<len[i]<<endl;
// }
int st=0;
memset(ans, '\0', sizeof(ans));
for(int i=1;i<=len[1];i++){
int k=0;
for(int j=st;j<st+len[1];j++){
s1[k++]=a[1][j];
}
s1[k]='\0';
st++;
// cout<<s1<<endl;
for(int ii=0;ii<c[len[1]];ii++){
int kk=0;
for(int jj=0;jj<len[1];jj++){
if(ii&(1<<jj)) s2[kk++]=s1[jj];
}
s2[kk]='\0';
// cout<<s2<<endl;
if(subset(kk)){
if(strlen(ans)<kk)
strcpy(ans,s2);
else if(strlen(ans)==kk)
if(strcmp(ans,s2)>0)
strcpy(ans,s2);
}
}
}
if(strlen(ans)>0)
cout<<ans<<endl;
else
cout<<0<<endl;
}
return 0;
}