#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;
}