
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
ll N = 1e9+7;
ll oo =1e13;
const ll maxx = 1000000 + 3;
ll n,m,k,q,x,y,z,l,r,mid,ans;
string s;
map<char,ll>mp;
unordered_set<string>ss;
void go(string s1) {
    if (s1.size()>s.size())return;
    if (s1.size() == s.size()) {
        map<char,ll>mp1;
        for (char c:s1){mp1[c]++;}

        for(auto &it:mp1) {
            if (it.second != mp[it.first]) return;
        }
        ss.insert(s1);
    }

    for (ll i=0;i<s.size();i++) {
        go(s1+s[i]);
    }

}
void solve() {
    cin>>s;
    for (char c:s){mp[c]++;}
    go("");

    ll size=ss.size();
    cout<<size<<endl;
    vector<string>v(ss.begin(),ss.end());
    sort(v.begin(),v.end());
    for (auto &it:v)cout<<it<<endl;
}
int main() {
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    ll t=1 ;
    // cin >>t;
    while (t--) {
        ans=0;
        solve();
    }
}