/*
* 输出一个字符数组中 的所有字符的所有组合。
* 比如有字符集str={A,B,C}。应输出: A B C AB AC BA BC CA CB ABC
* ACB BAC BCA CAB CBA
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
*
* @author Administrator(LiuLei) Time:2013-2-24
*
*/
public class MyTest8 {
public static void play(int n,int limit,String tempStr,List<String> list){
if(tempStr.length()==limit){ //满足1,2,3种排列
System.out.print(tempStr+" ");
return;
}
for(int i=n;i<list.size();i++){
list.add(n,list.remove(i));
tempStr+=list.get(n);
play(n+1,limit,tempStr,list);//递归调用
tempStr=tempStr.substring(0,tempStr.length()-1);//还原字符串
list.add(i,list.remove(n)); //还原list集合使还原为初始状态例如{A,B,C} }
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String inputStr=input.next();
List<String> arrayList=new ArrayList<String>();
for(int i=0;i<inputStr.length();i++)
arrayList.add(inputStr.charAt(i)+"");
for(int j=1;j<=arrayList.size();j++)
play(0,j,"",arrayList);
System.out.println();
}
}