#include<iostream>
using namespace std;
void swap(char a[],int i,int k)
{ //交换数组中的两个值。此处未考虑检测边界
char temp;
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
void prem(char a[],int k,int n)
{//全排列函数,产生前缀为a[0:k-1] 后缀为a[n+1:a.length]的全排列
if(k==n)
{
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
else
for(int j=k;j<n;j++)
{
swap(a,k,j); //依次交换数组中的值
prem(a,k+1,n);
swap(a,k,j);//恢复数组
}
}
int main(void)
{
int n,i,j;
char *p;
p=new char[4];
for(i=0;i<4;i++)
cin>>p[i];
prem(p,0,4);
return 0;
}