#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
const long long Q=79164837199873;
const int P=29;
vector<long long>a[6];
vector<int>aa;
long long Hash[6][2001],Pow[2001];
int n,ans;
string s[6];
int main()
{
ios::sync_with_stdio(false),cin.tie(0);
cin>>n;
Pow[0]=1;
for(int i(1);i<=2000;++i)Pow[i]=((__int128_t)Pow[i-1])*P%Q;
for(int i(1);i<=n;++i)cin>>s[i];
for(int i(1);i<=n;++i)
for(int j(1);j<=s[i].size();++j)
{
Hash[i][j]=P*Hash[i][j-1]+s[i][j-1]-'a'+1;
Hash[i][j]%=Q;
for(int l(0);l<j;++l)
{
a[i].push_back(((Hash[i][j]-((__int128_t)Hash[i][l])*Pow[j-l]%Q)+Q)%Q);
if(i==1)aa.push_back(j-l);
}
}
for(int i(2);i<=n;++i)sort(a[i].begin(),a[i].end());
for(int x(0);x<a[1].size();++x)
{
long long i=a[1][x];
int o=0;
for(int j(2);j<=n;++j)
{
auto y=lower_bound(a[j].begin(),a[j].end(),i);
if(y==a[j].end()||*y!=i)
{
o=1;
break;
}
}
if(!o)ans=max(ans,aa[x]);
}
cout<<ans;
return 0;
}