#include<cstdio>
#include<cstring>
#define re register
using namespace std;
int n,size=1,Trie[20002][26],ans,len[60],w,u,p,js[20002][26],TOT;
char s[6][2002];
inline int max(re int x,re int y){return x>y?x:y;}
int main()
{
re int i,j,k;
scanf("%d",&n);
len[w]=10000;
for(i=1;i<=n;++i)
{
scanf("%s",s[i]);
len[i]=strlen(s[i]);
if(len[i]<len[w])w=i;
TOT|=1<<i;
}
u=1;
for(i=0;i<len[w];++i)
{
u=1;
for(j=i;j<len[w];++j)
{
p=s[w][j]-'a';
if(!Trie[u][p])
{
js[u][p]|=1<<w;
Trie[u][p]=++size;
u=Trie[u][p];
}
}
}
for(i=1;i<=n;++i)
{
if(i==w)continue;
for(j=0;j<len[i];++j)
{
u=1;
for(k=j;k<len[i];++k)
{
p=s[i][k]-'a';
if(Trie[u][p])
{
js[u][p]|=1<<i;
if(js[u][p]==TOT)ans=max(ans,k-j+1);
u=Trie[u][p];
}
else
break;
}
}
}
printf("%d\n",ans);
}