# include<stdio.h>
# include<string.h>
# include<stdlib.h>
# define N  1000005
char s1[2*N],s2[2*N],s[N],ch1[N],ch2[N];; 
int next[N];
void Gnext(char str[])
{
    int i,j,len=strlen(str); 
    next[0]=0;
    j=0; 
    for(i=1;i<len;i++)
    {
        while(j>0 && str[j]!=str[i]) j=next[j-1];
        if(str[i]==str[j]) j++;
        next[i]=j; 
    } 
} 
int KMP(char *a,char *b)
{
    int i,j,lena,lenb,count;
    j=0;
    lena=strlen(a);
    lenb=strlen(b);
    count=0; 
    for(i=0;i<lenb;i++)
    {
        while(j>0 && a[j]!=b[i]) j=next[j-1];
        if(a[j]==b[i]) j++;
        if(j==lena) {j=next[j-1];count++;} 
    }  
    return count; 
} 
int main()
{
    int i,j,len1,len2,len,k,minnum,maxnum,count1,count2;
    while(scanf("%s",s)!=EOF)
    {
        len=strlen(s);
        strcpy(s1,s);
        strcat(s1,s);
        strcpy(s2,s1);
        i=0;j=1;
        while(i<=len && j<=len)
        {
            for(k=0;k<len;k++)
            if(s1[i+k]!=s2[j+k]) break;
            if(k==len) break;
            if(s1[i+k]>s2[j+k]) i=i+k+1;
            else j=j+k+1;
            if(i==j) j++;
        }
        if(j<i) i=j; 
        minnum=i+1;
        for(j=0;j<len;j++)
        ch1[j]=s1[i+j];
        ch1[j]=0;
        i=0;j=1;
        while(i<=len && j<=len)
        {
            for(k=0;k<len;k++)
            if(s1[i+k]!=s2[j+k]) break;
            if(k==len) break;
            if(s1[i+k]<s2[j+k]) i=i+k+1;
            else j=j+k+1;
            if(i==j) j++;
        }
        if(j<i) j=i;
        maxnum=i+1;
        for(j=0;j<len;j++)
        ch2[j]=s1[i+j];
        ch2[j]=0;       
        Gnext(ch1); 
        count1=KMP(ch1,s1); 
        if(minnum==1) count1--; 
        Gnext(ch2);
        count2=KMP(ch2,s1);
        if(maxnum==1) count2--; 
        printf("%d %d %d %d\n",minnum,count1,maxnum,count2); 
    }
    return 0;
}