#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define N 1000100
int n,tot,ans,ne,len;
int head[N],next[N],v[N];
bool w[N];
char s[90];
void dfs(int k,int p){
if(p==len) return ;
int x=s[p]-'a'+1,t=0;
for(int i=head[k];i;i=next[i]) if(v[i]==x){t=i;break;}//寻找有没有x节点,如果有记录位置
if(!t){v[++ne]=x;t=ne;next[ne]=head[k];head[k]=ne;}//如果没有在字典树上建立一个节点
if(p==len-1){w[t]=1;tot++;ans=max(ans,tot);return ;}//扫到头,标记末尾,当前答案+1(自己也算一个),更新ans,退出
else if(w[t]) tot++;//有前缀出现过,当前答案+1
dfs(t,p+1);//从t节点再往下扫
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%s",s);
len=strlen(s);
tot=0;//当前答案 从0开始寻找
dfs(0,0);//0号节点为根节点,从字符串的0号位置往后扫
}
printf("%d\n",ans);
return 0;
}