用kmp中的next求得
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define maxn 1100000
int next[maxn];
char str[maxn];
int getNext()
{
int k=-1;
int j=0;
int n=strlen(str);
next[0]=-1;
while(j<n)
{
if(k==-1||str[j]==str[k])
{
j++;
k++;
if(str[j]!=str[k])
next[j]=k;
else
next[j]=next[k];
}
else
k=next[k];
}
j=n-k;
if(n%j==0)
return n/j==1?n:0;
else
return j-(n-n/j*j);
}
int main()
{
int t;
cin>>t;
while(t--)
{
scanf("%s",str);
cout<<getNext()<<endl;
}
return 0;
}