import java.util.ArrayList;
import java.util.TreeSet;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> result = new ArrayList<String>();
if(str != null && str.length() > 0){
TreeSet<String> res = new TreeSet<String>();
process(str.toCharArray(), 0, res);
result.addAll(res) ;
}
return result;
}
public void process(char[] str,int i,TreeSet<String> list){
if(i == str.length-1){
String val = String.valueOf(str);
if(!list.contains(val)){
list.add(val);
}
}else{
for(int j=i; j<str.length; j++){
swap(str,i,j);
process(str, i+1, list);
swap(str,i,j);
}
}
}
public void swap(char[] str,int i,int j){
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}