#include<iostream>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
gp_hash_table<string,bool> f[6];
const int N=6;
string s[N];
int len[N],n;
bool check(int mid){
for(int i=0;i<=len[1]-mid;i++){
string x="";
for(int j=i;j<i+mid;j++){
x+=s[1][j];
}
for(int k=2;k<=n;k++){
if(!f[k][x]){
goto fl;
}
}
return 1;
fl:;
}
return 0;
}
int main(){
cin >> n;
for(int i=1;i<=n;i++){
cin >> s[i];
len[i] = s[i].size();
}
for(int i=1;i<=n;i++){
for(int j=0;j<len[i];j++){
string x="";
for(int k=j;k<len[i];k++){
x+=s[i][k];
f[i][x]=1;
}
}
}
int l = 0, r = len[1]<<1 ,ans = 0;
while(l<=r){
int mid = (l+r)>>1;
if(check(mid)){
ans=mid;
l=mid+1;
}else{
r=mid-1;
}
}
cout << ans;
return 0;
}