class Solution {
public:
void swap(char& a,char& b){
char c = a;
a = b;
b = c;
return;
}
void permutation(string str,vector<string>& result,int begin){
if(begin == (str.size()-1)){
if(find(result.begin(),result.end(),str) == result.end()){
result.push_back(str);
}
return;
}else{
for(int i = begin; i < str.size(); i++){
swap(str[i],str[begin]);
permutation(str,result,begin+1);
swap(str[i],str[begin]);
}
return;
}
}
vector<string> Permutation(string str) {
vector<string> result;
if(str.empty())
return result;
permutation(str,result,0);
sort(result.begin(),result.end());
return result;
}
};