#include<iostream> #include<cstring> using namespace std; int data[10]; void reverse(char*s,char*t){ for(int i=0;i<10;i++){ data[i] = 0; } for(int i=0;i<strlen(s);i++){ data[s[i]-'0']++; } int idx = 0; for(int i=0;i<10;i++){ if(data[i]>0){ if(data[i]>9){ t[idx++] = data[i]/10+'0'; t[idx++] = data[i]%10+'0'; } else{ t[idx++] = data[i]+'0'; } t[idx++] = i+'0'; } } t[idx] = '\0'; } int main(){ char s[15][81]; while(cin>>s[0]){ if(s[0][0]=='-'&&s[0][1]=='1')break; reverse(s[0],s[1]); if(strcmp(s[0],s[1])==0){ cout<<s[0]<<" is self-inventorying "<<endl; continue; } bool flag = true; for(int i=2;i<=15;i++){ reverse(s[i-1],s[i]); if(strcmp(s[i-1],s[i])==0){ cout<<s[0]<<" is self-inventorying after "<<i-1<<" steps"<<endl; flag = false; break; } else{ for(int j=0;j<i;j++){ if(strcmp(s[j],s[i])==0){ cout<<s[0]<<" enters an inventory loop of length "<<i-j<<endl; flag = false; break; } } if(flag==false){ break; } } } if(flag){ cout<<s[0]<<" can not be classified after 15 iterations"<<endl; } } return 0; }