/*这道题目是个基础kmp匹配的题目 利用next数组记录最大自身匹配值,那么l-next[l]表示就是可以的最小重叠子串,如果l被l-next[l]整除则输出商,否则输出1*/
#include<cstdio>
#include<cstring>
char s[1000010];
int l,next[1000010];
int kmp()
{
l=strlen(s+1);
next[1]=0;
int k=0;
for(int i=2;i<=l;i++)
{
while(k>0&&s[k+1]!=s[i])
k=next[k];
if(s[k+1]==s[i])
k=k+1;
next[i]=k;
}
if(l%(l-next[l])==0)
return l/(l-next[l]);
else
return 1;
}
int main()
{
while(scanf("%s",s+1)!=EOF&&strcmp(s+1,"."))
{
printf("%d\n",kmp());
}
return 0;
}