vector<string> permutation(const string& A)

{

    vector<string> res;

    if (A.empty()) 

    {

        res.push_back("");

        return res;

    }

    for (int i = 0; i < A.size(); i++)

    {

        vector<string> next = permutation(A.substr(0, i) + A.substr(i + 1));

        for (string & b :next)

            res.push_back(A.substr(i, 1) + b);

    }

    return res;

}
