#include <iostream>
#include <map>
#include <bits/stdc++.h>
#include <vector>
using namespace std;
const long long mod=1e9+7;
const int N=5e5+10;
string s[N];
int dp[N],ans=0;
const int M=3e6+100;
map<long long,int> z[M],o[M];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>s[i];
}
for(int i=0;i<n;i++)
{
int l=s[i].size();
int ohsh=0,zhsh=0;
for(int j=l-1;j>=0;j--)
{
zhsh=(1ll*zhsh*29+(s[i][j]-'a'+1))%mod;
if(j==1)ohsh=zhsh;
}
dp[i]=max({z[l-1][ohsh],z[l][zhsh],o[l][ohsh],o[l+1][zhsh]})+1;
// cout<<"at "<<i<<' '<<s[i]<<' '<<dp[i]<<endl;
z[l][zhsh]=max(z[l][zhsh],dp[i]);
o[l][ohsh]=max(o[l][ohsh],dp[i]);
ans=max(ans,dp[i]);
}
cout<<ans<<endl;
}