#include <iostream>
using namespace std;
int
maxi, n, ans[1001];
string str[1001];
bool
ifcontain( string str1, string str2 )
{
if( str2 == "*" )
return true;
if( str1.length() < str2.length() )
{
for( unsigned int i = 0; i < str1.length(); i++ )
if( str1[i] != str2[i] )
return false;
return true;
}
return false;
}
void
__read__()
{
cin >> n;
for( int i = 1; i <= n; i++ )
cin >> str[i];
}
void
__init__()
{
for( int i = 1; i <= n + 1; i++ )
ans[i] = 1;
str[n + 1] = "*";
}
void
__dp__()
{
for( int i = 2; i <= n + 1; i++ )
for( int j = 1; j < i; j++ )
if( ifcontain( str[j], str[i] ) )
if( ans[i] < ans[j] + 1 )
ans[i] = ans[j] + 1;
}
void
__outp__()
{
cout << ans[n + 1] - 1 << endl;
}
int
main()
{
__read__();
__init__();
__dp__();
__outp__();
return 0;
}