class Solution {
public:
int vs[10];
string p,tmp;
set<string>ans;
void dfs(int x,int n){
if(x==n){
ans.insert(tmp);
return ;
}
for(int i=0;i<n;i++){
if(!vs[i]){
vs[i]=1;
tmp+=p[i];
dfs(x+1,n);
tmp.erase(--tmp.end());
vs[i]=0;
}
}
}
vector<string> permutation(string s) {
p=s;
memset(vs,0,sizeof(vs));
ans.clear();
tmp.clear();
int n=s.length();
dfs(0,n);
vector<string>pr;
for(auto x:ans)pr.push_back(x);
return pr;
}
};