fork download
  1.  
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. #define ll long long
  5. #define endl '\n'
  6. ll N = 1e9+7;
  7. ll oo =1e13;
  8. const ll maxx = 1000000 + 3;
  9. ll n,m,k,q,x,y,z,l,r,mid,ans;
  10. string s;
  11. map<char,ll>mp;
  12. unordered_set<string>ss;
  13.  
  14. void go(string s1) {
  15. if (s1.size() == s.size()) {
  16. ss.insert(s1);
  17. return;
  18. }
  19.  
  20. for (ll i=0;i<s.size();i++) {
  21. if (mp[s[i]] == 0)continue;
  22. mp[s[i]]--;
  23. go(s1+s[i]);
  24. mp[s[i]] ++;
  25. }
  26.  
  27. }
  28. void solve() {
  29. cin>>s;
  30. for (char c:s){mp[c]++;}
  31. go("");
  32.  
  33. ll size=ss.size();
  34. cout<<size<<endl;
  35. vector<string>v(ss.begin(),ss.end());
  36. sort(v.begin(),v.end());
  37. for (auto &it:v)cout<<it<<endl;
  38. }
  39. int main() {
  40. ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
  41. ll t=1 ;
  42. // cin >>t;
  43. while (t--) {
  44. ans=0;
  45. solve();
  46. }
  47. }
Success #stdin #stdout 0s 5316KB
stdin
abc
stdout
6
abc
acb
bac
bca
cab
cba