#include<stdio.h>
#include<string.h>
int arr[10];
int m=10;
void pre()
{
char ip[11];
scanf("%s",ip);
arr[0]=0;
for(int i=1;i<m;i++)
{
int len=arr[i-1];
while(1)
{
if(ip[len]==ip[i])
{
arr[i]=len+1;
break;
}
else
{
if(len==0)
{
if(ip[i]==ip[0])
arr[i]=1;
else
arr[i]=0;
break;
}
else
{
if(len==arr[len]) //This line if not present gives infinite loop
len=0; //I wanna know should it be 0 or sth else. It's giving right answer for my cases
else
len=arr[len];
}
}
}
}
for(int i=0;i<m;i++)
printf("%d\t",arr[i]);
printf("\n");
}
int main()
{
pre();
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CmludCBhcnJbMTBdOwppbnQgbT0xMDsKdm9pZCBwcmUoKQp7CgljaGFyIGlwWzExXTsKCXNjYW5mKCIlcyIsaXApOwoJYXJyWzBdPTA7Cglmb3IoaW50IGk9MTtpPG07aSsrKQoJewoJCWludCBsZW49YXJyW2ktMV07CgkJd2hpbGUoMSkKCQl7CgkJCWlmKGlwW2xlbl09PWlwW2ldKQoJCQl7CgkJCQlhcnJbaV09bGVuKzE7CgkJCQlicmVhazsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWlmKGxlbj09MCkKCQkJCXsKCQkJCQlpZihpcFtpXT09aXBbMF0pCgkJCQkJCWFycltpXT0xOwoJCQkJCWVsc2UKCQkJCQkJYXJyW2ldPTA7CgkJCQkJCgkJCQkJCgkJCQkJYnJlYWs7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJaWYobGVuPT1hcnJbbGVuXSkJLy9UaGlzIGxpbmUgaWYgbm90IHByZXNlbnQgZ2l2ZXMgaW5maW5pdGUgbG9vcAoJCQkJCQlsZW49MDsJCS8vSSB3YW5uYSBrbm93IHNob3VsZCBpdCBiZSAwIG9yIHN0aCBlbHNlLiBJdCdzIGdpdmluZyByaWdodCBhbnN3ZXIgZm9yIG15IGNhc2VzCgkJCQkJZWxzZQoJCQkJCQlsZW49YXJyW2xlbl07CgkJCQl9CgkJCX0KCQl9Cgl9Cglmb3IoaW50IGk9MDtpPG07aSsrKQoJCXByaW50ZigiJWRcdCIsYXJyW2ldKTsKCXByaW50ZigiXG4iKTsKfQppbnQgbWFpbigpCnsKCXByZSgpOwp9