#include <iostream>
using namespace std;
const int N = 10;
string res,a;
bool st[N];
void dfs(int dp)
{
if(dp == a.length())
{
cout<<res<<endl;
return;
}
for(int i=0 ; i<a.length() ; i++)
{
if(!st[i])
{
st[i]=true;
res += a[i];
dfs(dp+1);//dp + 1 作为参数传递给 dfs 时,您实际上是在传递一个表达式的结果,而不是传递 dp 本身的引用或副本。
res.pop_back();
st[i]=false;
}
}
}
int main()
{
cin>>a;
fill(st, st + N, false);
dfs(0);
return 0;
}