#include <bits/stdc++.h>
using namespace std;
#define int long long
int const N=3e6+10,d=727,mod=1e9+7;
vector<int>s[N]={};
bool com(string a,string b)
{
return (a.size()<b.size());
}
int hash1(string a)
{
int hsh=0;
for (int i=1;i<a.size();i++)
hsh=(hsh*d+a[i])%mod;
return hsh;
}
int hash2(string a)
{
int hsh=0;
for (int i=0;i<a.size();i++)
hsh=(hsh*d+a[i])%mod;
return hsh;
}
inline void solve()
{
int n;
cin>>n;
string a[n]={};
for (auto&i :a)
cin>>i;
int ans[n]={};
for (int i=0;i<n;i++)
s[a[i].size()].push_back(i);
for (int i=1;i<N;i++)
{
if (s[i].size()==0)
continue;
map<int,int>cnt;
for (auto j:s[i])
cnt[hash1(a[j])]++;
for (auto j:s[i])
ans[j]=cnt[hash1(a[j])];
map<int,int>ava;
for (auto j:s[i-1])
ava[hash2(a[j])]=ans[j];
for (auto j:s[i])
{
int f=hash1(a[j]);
if (ava.find(f)!=ava.end())
ans[j]+=ava[f];
}
}
int mx=0;
for (int i=0;i<n;i++)
mx=max(ans[i],mx);
cout<<mx<<endl;
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
for (int i=1;i<=t;i++)
{
solve();
}
}