#include<bits/stdc++.h>
using namespace std;
string s;
int i,j,k;
int main()
{
cin>>s;
int len=s.length();
s+=s;
i=0;j=1;
while(i<len&&j<len)
{
for(k=0;k<len&&s[i+k]==s[j+k];k++);
if(k==len)
{
printf("循环元=");
for(int q=min(i,j);q<max(i,j);q++)
printf("%c",s[q]);
printf("\n");
j++;
}
else
{
if(s[i+k]>s[j+k]) i=i+k+1!=j?i+k+1:i+k+2;
//s[i~i+k]不是ans
else j=j+k+1!=i?j+k+1:j+k+2;
//=if(s[i+k]<s[j+k]
//s[j~j+k]不是ans
}
}
int ans=min(i,j);
printf("循环同构最小表示为:");
for(i=0;i<len;i++) printf("%c",s[ans+i]);
}