#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
#include<bits/stdc++.h>
using namespace std;
// 回溯穷举(可以将题目逻辑转化为树型结构理解)
void traversal(string ans, const string &s, vector<bool> &used) {
// 递归终止条件
if (ans.size() == s.size()) {
cout << ans << endl;
return;
}
// 遍历一层中所有可能的结果
for (int i = 0; i < s.size(); i++) {
if (!used[i]) {
used[i] = true;
traversal(ans + s[i], s, used);
used[i] = false;
}
}
}
int main(){
string str = "";
while (cin >> str) {
vector<bool> used(str.size(), false);
traversal("", str, used);
}
return 0;
}