Pagini recente » Cod sursa (job #1907517) | Cod sursa (job #2692464) | Cod sursa (job #478948) | Cod sursa (job #1923973) | Cod sursa (job #157669)
Cod sursa(job #157669)
#include<cstdio>
#include<cstring>
using namespace std;
const int size=1000003;
int pi[size];
char a[size];
int n,i,k,t,lg;
bool isperiodic()
{
if(pi[i]==-1) return 0;
if((i+1)%(i-pi[i])==0) return 1;
return 0;
}
inline void solve()
{
gets(a);
n=strlen(a);
k=-1;
pi[0]=-1;
for(i=1;i<n;++i){
while(k>=0 && a[k+1]!=a[i])
k=pi[k];
if(a[k+1]==a[i]) ++k;
pi[i]=k;}
lg=0;
for(i=n-1;i>0;--i)
if(isperiodic()) {lg=i+1;break;}
printf("%d\n",lg);
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d ",&t);
for(;t;--t)
solve();
fclose(stdout);
return 0;
}