#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 25e4 + 5;
const int MX = 25e4 + 5;
template<typename T>
void maximize(T& a, const T& b) {
if (a < b) a = b;
}
struct Node {
int nxt[26];
bool mark = false;
Node() {
memset(nxt, -1, sizeof nxt);
}
};
int sz;
Node trie[MX];
void addString(const string& s) {
int v = 0;
for (char ch : s) {
int c = ch - 'a';
if (trie[v].nxt[c] == -1) {
trie[v].nxt[c] = ++sz;
}
v = trie[v].nxt[c];
}
trie[v].mark = true;
}
// Đếm số xâu có trên đường đi từ gốc cho đến đỉnh v tương ứng với xâu s
int getCount(const string& s) {
int v = 0, ans = 0;
for (char ch : s) {
int c = ch - 'a';
v = trie[v].nxt[c];
ans += trie[v].mark;
}
return ans;
}
int n;
string s[N];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 1; i <= n; i++) cin >> s[i];
for (int i = 1; i <= n; i++) addString(s[i]);
// Tìm đường đi từ gốc đi qua nhiều xâu nhất
int ans = 0;
for (int i = 1; i <= n; i++) {
maximize(ans, getCount(s[i]));
}
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAyNWU0ICsgNTsgCmNvbnN0IGludCBNWCA9IDI1ZTQgKyA1OyAKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgbWF4aW1pemUoVCYgYSwgY29uc3QgVCYgYikgewoJaWYgKGEgPCBiKSBhID0gYjsgIAp9CgpzdHJ1Y3QgTm9kZSB7CglpbnQgbnh0WzI2XTsgCglib29sIG1hcmsgPSBmYWxzZTsgCgoJTm9kZSgpIHsKCQltZW1zZXQobnh0LCAtMSwgc2l6ZW9mIG54dCk7IAoJfQp9OyAKCmludCBzejsgCk5vZGUgdHJpZVtNWF07IAoKdm9pZCBhZGRTdHJpbmcoY29uc3Qgc3RyaW5nJiBzKSB7CglpbnQgdiA9IDA7IAoJZm9yIChjaGFyIGNoIDogcykgewoJCWludCBjID0gY2ggLSAnYSc7IAoJCWlmICh0cmllW3ZdLm54dFtjXSA9PSAtMSkgewoJCQl0cmllW3ZdLm54dFtjXSA9ICsrc3o7IAoJCX0KCQl2ID0gdHJpZVt2XS5ueHRbY107IAoJfQoJdHJpZVt2XS5tYXJrID0gdHJ1ZTsgCn0KCi8vIMSQ4bq/bSBz4buRIHjDonUgY8OzIHRyw6puIMSRxrDhu51uZyDEkWkgdOG7qyBn4buRYyBjaG8gxJHhur9uIMSR4buJbmggdiB0xrDGoW5nIOG7qW5nIHbhu5tpIHjDonUgcwppbnQgZ2V0Q291bnQoY29uc3Qgc3RyaW5nJiBzKSB7CglpbnQgdiA9IDAsIGFucyA9IDA7ICAKCWZvciAoY2hhciBjaCA6IHMpIHsKCQlpbnQgYyA9IGNoIC0gJ2EnOyAgCgkJdiA9IHRyaWVbdl0ubnh0W2NdOyAKCQlhbnMgKz0gdHJpZVt2XS5tYXJrOwoJfQoJcmV0dXJuIGFuczsgCn0KCmludCBuOyAKc3RyaW5nIHNbTl07IAoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG47IAoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gc1tpXTsgCgoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBhZGRTdHJpbmcoc1tpXSk7IAoKCS8vIFTDrG0gxJHGsOG7nW5nIMSRaSB04burIGfhu5FjIMSRaSBxdWEgbmhp4buBdSB4w6J1IG5o4bqldAoJaW50IGFucyA9IDA7ICAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCW1heGltaXplKGFucywgZ2V0Q291bnQoc1tpXSkpOyAKCX0KCgljb3V0IDw8IGFucyA8PCAnXG4nOyAKfQ==