#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #define pb push_back #define fi first #define se second #define io std::ios::sync_with_stdio(false) using namespace std; typedef long long ll; typedef pair<ll,ll> pii; //const double pi=acos(-1); const ll p = 998244353, INF = 0x3f3f3f3f; const ll mod=1e9+7; ll gcd(ll a,ll b){return b?gcd(b,a%b):a;} ll exgcd(ll a, ll b, ll &x, ll &y) {if(!b) {x = 1; y = 0; return a;}ll r = exgcd(b, a % b, x, y);ll tmp = x; x = y, y = tmp - a / b * y;return r;} ll qpow(ll a,ll n,ll modd){ll r=1%mod;for (a%=modd; n; a=a*a%modd,n>>=1)if(n&1)r=r*a%modd;return r;} const double eps=1e-5; const ll maxn=1e6+10; ll lcm(ll a,ll b){return a*b/gcd(a,b);} char a[maxn]; long long h[maxn]; long long po[maxn]; long long geth(int l,int r) { return ((h[r]-h[l-1]*po[r-l+1])%mod+mod)%mod; } int main() { while(~scanf("%s",a+1)) { if(a[1]=='.') break; int n=strlen(a+1); po[0]=1; for(int i=1;i<=n;i++) { h[i]=(h[i-1]*p+a[i])%mod; po[i]=po[i-1]*p%mod; } for(int i=1;i<=n;i++) { ll v=geth(1,i); int flag=1; if(n%i) continue; for(int l=i+1;l<=n;l+=i) { int r=l+i-1; if(r>n) { flag=0; break; } if(geth(l,r)!=v) { flag=0; break; } } if(flag) { printf("%d ",n/i); break; } } } }