#include <iostream> #include <string> #include <map> using namespace std; void backtracking(int level,string s); void mswap(char &a,char &b); map<string,bool> m; int main() { string s; while(cin>>s) { m.clear(); backtracking(0,s); for(auto x:m) { cout<<x.first<<endl; } } } // 64 位输出请用 printf("%lld") void backtracking(int level,string s) { if(level==s.size()) { m[s]=true; } for(int i=level;i<s.size();++i) { mswap(s[i],s[level]); backtracking(level+1,s); mswap(s[i],s[level]); } } void mswap(char &a,char &b) { char temp=a; a=b; b=temp; }