#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

const int N = 100;

bool visited[N];

char seq[N];

// dfs
void permutation(string str,int index){
	// 如果递归的深度等于字符串的长度表示已经找到序列了 
	if(index == str.size()){
		for(int i = 0;i < str.size();i ++){
			cout << seq[i];
		}
		cout << endl;
	}
	// 排序
	for(int i = 0;i < str.size();i ++){
		if(visited[i]){
			continue;
		}
		visited[i] = true;
		seq[index] = str[i];
		// 递归下一层,把原端点复位 
		permutation(str,index + 1);
		visited[i] = false;
	} 
	
}
int main(){
	string str;
	
	while(cin >> str){
		sort(str.begin(),str.end());
		permutation(str,0);
		cout << endl;
	}
	return 0;
}