mmin=mmin
}
mmin=999999999;
for(i=j+1;i<=n;i++)
{
mmin=mmin
}
}
int main()
{
int i,n;
while(scanf("%s",str)!=EOF)
{
n=strlen(str);
if(n==1&&str[0]=='.') break;
for(i=0;i
dc3(r,sa,n+1,123);//千万注意+1
calheight(r,sa,n);
// initRMQ(n);
/*
for(i=0; i
printf("\n");
for(i=0; i
*/
int len;
int mmax=0;
get_f(n);
for(len=1;len<=n;len++)
{
if(n%len==0)
{
if(f[rank[len]]==(n-len))
///注意是rank[len],因为这里在求0和0+len的lcp ,即要求rank[0]到rank[len]之间的最小height值
{
mmax=n/len;
break;
}
}
}
if(mmax!=0)
printf("%d\n",mmax);
else printf("1\n");
}
return 0;
}