#include<stdio.h>
void fun(char *p,int m,int n)
{
if(n==m)
{
for(int i=0;i<m;i++)
printf("%c",*(p+i));
printf("\n");
return ;
}
for(int j=n;j<m;j++)//递归交换,令J=N代表到达这一层开始换位置排序了,即第n层要和其余层排序
{
char temp;
temp=p[n];
p[n]=p[j];
p[j]=temp;
fun(p,m,n+1);
temp=p[n];
p[n]=p[j];
p[j]=temp;
}
}
int main()
{
char str[100];
scanf("%s",str);
for(int i=0;str[i]!='\0';i++);
fun(str,i,0);
}