#include <string>
#include <unordered_set>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str string字符串 
     * @return string字符串vector
     */

    vector<string> ans;
    string res = "";
    void dfs(string str){
        if(str.empty()) {ans.push_back(res);return;}
        unordered_set<char> u_set={};
        for(size_t i=0;i<str.size();i++){
            char tmp = str.at(i);
            if(u_set.count(tmp)!=0) continue;
            else u_set.insert(tmp);
            res += tmp;
            str.erase(i,1);
            dfs(str);
            str.insert(str.begin()+i, res.back());
            res.pop_back();
        }
    }
    vector<string> Permutation(string str) {
        // write code here
        dfs(str);
        return ans;
    }
};