# include
# include
char s[100];
int n = 0;
void swap(char *a, char *b)
{
char m;
m = *a;
*a = *b;
*b = m;
}
void circle_right(char a[],int m,int i)
{
char temp;
int j,k;
for(k=1;k<=i-m;k++)
{
temp=a[i];
for(j=i;j>m;j--)
{
a[j]=a[j-1];
}
a[m]=temp;
}
}
void circle_left(char a[],int m,int i)
{
char temp;
int j,k;
for(k=1;k<=i-m;k++)
{
temp=a[m];
for(j=m;j {
a[j]=a[j+1];
}
a[i]=temp;
}
}
void perm(int k,char a[],int l)
{
int i;
if(k == 1)
{
for(i = 0; i < l; i++)
printf("%c", s[i]);
printf("\n");
n++;
return;
}
for(i = 0; i < k; i++)
{
swap(&a[0], &a[i]);
circle_right(a,1,i);
perm(k-1,&a[1],l);
circle_left(a,1,i);
swap(&a[i], &a[0]);
}
}
int main()
{
int l;
gets(s);
l=strlen(s);
perm(l,s,l);
printf("total:%d\n", n);
return 0;
}