#include <iostream>
#include <cstdio>
#include <string>
#define MAXN 1000000
using namespace std;
string s;
int z[MAXN + 5];
int maxim ( int a, int b ) {
if ( a < b )
a = b;
return a;
}
void zet( ) {
z[0] = s.size();
int st = 0, dr = 0;
for ( int i = 1; i < s.size(); i++ ) {
z[i] = z[i - st];
if ( i + z[i] >= dr ) {
z[i] = maxim ( 0, dr - i );
st = i;
dr = i + z[i];
}
while ( i + z[i] < s.size() && s[z[i]] == s[i + z[i]] ) {
z[i]++;
dr++;
}
}
}
int main() {
int t;
FILE *fin = fopen ( "prefix.in", "r" );
fscanf ( fin, "%d", &t );
char c = fgetc ( fin );
FILE *fout = fopen ( "prefix.out", "w" );
while ( t ) {
c = fgetc ( fin );
s.clear();
do {
s += c;
c = fgetc ( fin );
} while ( c != '\n' );
zet();
int ans = 0;
for ( int i = 1; i < s.size(); i++ )
if ( z[i] >= i )
ans = maxim ( ans, i + z[i] - z[i] % i );
fprintf ( fout, "%d\n", ans );
t--;
}
fclose ( fin );
fclose ( fout );
return 0;
}