#include <stdio.h>
#include <string.h>
#include <queue>
using namespace std;
#define ML 1000005
int N, m;
int a[ML][26], fail[ML], fin[ML], d[ML];
char S[1005];
int main() {
while (scanf("%d", &N), N) {
m = 0;
for (int i = 1; i <= N; i++) {
scanf("%s", S + 1);
int p = 0;
for (int j = 1; S[j]; j++) {
if (a[p][S[j] - 'a']) p = a[p][S[j] - 'a'];
else ++m, a[p][S[j] - 'a'] = m, p = m;
}
fin[p]++;
}
++m;
queue <int> q, qf;
q.push(0); qf.push(m);
int res = 0;
while (!q.empty()) {
int x = q.front(); q.pop();
int xf = qf.front(); qf.pop();
fail[x] = xf;
if (res < d[x]) res = d[x];
for (int i = 0; i < 26; i++) {
if (!a[x][i]) continue;
int y = a[x][i], yf = xf;
if (fin[yf]) fin[x] = 1;
while (yf != m && !a[yf][i]) yf = fail[yf];
yf = a[yf][i];
d[y] = max(d[x], d[yf]) + fin[y];
q.push(y);
qf.push(yf);
}
}
printf("%d\n", res);
for (int i = 0; i <= m; i++) {
for (int j = 0; j < 26; j++) a[i][j] = 0;
fail[i] = d[i] = fin[i] = 0;
}
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHF1ZXVlPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIE1MIDEwMDAwMDUKaW50IE4sIG07CmludCBhW01MXVsyNl0sIGZhaWxbTUxdLCBmaW5bTUxdLCBkW01MXTsKY2hhciBTWzEwMDVdOwppbnQgbWFpbigpIHsKCXdoaWxlIChzY2FuZigiJWQiLCAmTiksIE4pIHsKCQltID0gMDsKCQlmb3IgKGludCBpID0gMTsgaSA8PSBOOyBpKyspIHsKCQkJc2NhbmYoIiVzIiwgUyArIDEpOwoJCQlpbnQgcCA9IDA7CgkJCWZvciAoaW50IGogPSAxOyBTW2pdOyBqKyspIHsKCQkJCWlmIChhW3BdW1Nbal0gLSAnYSddKSBwID0gYVtwXVtTW2pdIC0gJ2EnXTsKCQkJCWVsc2UgKyttLCBhW3BdW1Nbal0gLSAnYSddID0gbSwgcCA9IG07CgkJCX0KCQkJZmluW3BdKys7CgkJfQoJCSsrbTsKCQlxdWV1ZSA8aW50PiBxLCBxZjsKCQlxLnB1c2goMCk7IHFmLnB1c2gobSk7CgkJaW50IHJlcyA9IDA7CgkJd2hpbGUgKCFxLmVtcHR5KCkpIHsKCQkJaW50IHggPSBxLmZyb250KCk7IHEucG9wKCk7CgkJCWludCB4ZiA9IHFmLmZyb250KCk7IHFmLnBvcCgpOwoJCQlmYWlsW3hdID0geGY7CgkJCWlmIChyZXMgPCBkW3hdKSByZXMgPSBkW3hdOwoJCQlmb3IgKGludCBpID0gMDsgaSA8IDI2OyBpKyspIHsKCQkJCWlmICghYVt4XVtpXSkgY29udGludWU7CgkJCQlpbnQgeSA9IGFbeF1baV0sIHlmID0geGY7CgkJCQlpZiAoZmluW3lmXSkgZmluW3hdID0gMTsKCQkJCXdoaWxlICh5ZiAhPSBtICYmICFhW3lmXVtpXSkgeWYgPSBmYWlsW3lmXTsKCQkJCXlmID0gYVt5Zl1baV07CgkJCQlkW3ldID0gbWF4KGRbeF0sIGRbeWZdKSArIGZpblt5XTsKCQkJCXEucHVzaCh5KTsKCQkJCXFmLnB1c2goeWYpOwoJCQl9CgkJfQoJCXByaW50ZigiJWRcbiIsIHJlcyk7CgkJZm9yIChpbnQgaSA9IDA7IGkgPD0gbTsgaSsrKSB7CgkJCWZvciAoaW50IGogPSAwOyBqIDwgMjY7IGorKykgYVtpXVtqXSA9IDA7CgkJCWZhaWxbaV0gPSBkW2ldID0gZmluW2ldID0gMDsKCQl9Cgl9Cn0=