#include <bits/stdc++.h>
using namespace std;
struct cmp {
bool operator() (const string& a, const string& b) const {
if (a.size() != b.size()) {
return a.size() < b.size();
}
return a < b;
}
};
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
map<string, int> cnt;
multiset<string, cmp> secik;
int n;
cin >> n;
int ans = 0;
for (int i = 0; i < n; i++) {
string str;
cin >> str;
ans = max(ans, (int)str.size());
cnt[str]++;
secik.insert(str);
}
while (!secik.empty()) {
string shortest = *secik.begin();
//cout << "D1: " << shortest << '\n';
secik.erase(secik.begin());
ans = max(ans, (int)shortest.size());
if (cnt[shortest] > 1) {
string new_longer = shortest + shortest;
//cout << "D2: " << new_longer << '\n';
cnt[shortest] -= 2;
cnt[new_longer]++;
secik.erase(secik.find(shortest));
secik.insert(new_longer);
}
}
cout << ans << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgY21wIHsKICAgIGJvb2wgb3BlcmF0b3IoKSAoY29uc3Qgc3RyaW5nJiBhLCBjb25zdCBzdHJpbmcmIGIpIGNvbnN0IHsKICAgICAgICBpZiAoYS5zaXplKCkgIT0gYi5zaXplKCkpIHsKICAgICAgICAgICAgcmV0dXJuIGEuc2l6ZSgpIDwgYi5zaXplKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBhIDwgYjsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CgogICAgbWFwPHN0cmluZywgaW50PiBjbnQ7CiAgICBtdWx0aXNldDxzdHJpbmcsIGNtcD4gc2VjaWs7CgogICAgaW50IG47CiAgICBjaW4gPj4gbjsKICAgIGludCBhbnMgPSAwOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgc3RyaW5nIHN0cjsKICAgICAgICBjaW4gPj4gc3RyOwogICAgICAgIGFucyA9IG1heChhbnMsIChpbnQpc3RyLnNpemUoKSk7CiAgICAgICAgY250W3N0cl0rKzsKICAgICAgICBzZWNpay5pbnNlcnQoc3RyKTsKICAgIH0KCiAgICB3aGlsZSAoIXNlY2lrLmVtcHR5KCkpIHsKICAgICAgICBzdHJpbmcgc2hvcnRlc3QgPSAqc2VjaWsuYmVnaW4oKTsKICAgICAgICAvL2NvdXQgPDwgIkQxOiAiIDw8IHNob3J0ZXN0IDw8ICdcbic7CiAgICAgICAgc2VjaWsuZXJhc2Uoc2VjaWsuYmVnaW4oKSk7CgogICAgICAgIGFucyA9IG1heChhbnMsIChpbnQpc2hvcnRlc3Quc2l6ZSgpKTsKCiAgICAgICAgaWYgKGNudFtzaG9ydGVzdF0gPiAxKSB7CiAgICAgICAgICAgIHN0cmluZyBuZXdfbG9uZ2VyID0gc2hvcnRlc3QgKyBzaG9ydGVzdDsKICAgICAgICAgICAgLy9jb3V0IDw8ICJEMjogIiA8PCBuZXdfbG9uZ2VyIDw8ICdcbic7CiAgICAgICAgICAgIGNudFtzaG9ydGVzdF0gLT0gMjsKICAgICAgICAgICAgY250W25ld19sb25nZXJdKys7CgogICAgICAgICAgICBzZWNpay5lcmFzZShzZWNpay5maW5kKHNob3J0ZXN0KSk7CiAgICAgICAgICAgIHNlY2lrLmluc2VydChuZXdfbG9uZ2VyKTsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCBhbnMgPDwgJ1xuJzsKCgogICAgcmV0dXJuIDA7Cn0K