class Solution { public: void dfs(set<string>&s,string&str,string &temp,vector<bool>&f) { bool flag=true; for(int i=0;i<str.length();i++) { if(f[i])continue; f[i]=true; flag=false; temp.push_back(str[i]); dfs(s,str,temp,f); f[i]=false; temp.pop_back(); } if(flag)s.insert(temp); } vector<string> Permutation(string str) { string temp=""; set<string>s; vector<string>res; vector<bool>f(str.length(),false); dfs(s,str,temp,f); for(auto x:s)res.push_back(x); return res; } };