#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()) {
ss.insert(s1);
return;
}
for (ll i=0;i<s.size();i++) {
if (mp[s[i]] == 0)continue;
mp[s[i]]--;
go(s1+s[i]);
mp[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();
}
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVuZGwgJ1xuJwpsbCBOID0gMWU5Kzc7CmxsIG9vID0xZTEzOwpjb25zdCBsbCBtYXh4ID0gMTAwMDAwMCArIDM7CmxsIG4sbSxrLHEseCx5LHosbCxyLG1pZCxhbnM7CnN0cmluZyBzOwptYXA8Y2hhcixsbD5tcDsKdW5vcmRlcmVkX3NldDxzdHJpbmc+c3M7Cgp2b2lkIGdvKHN0cmluZyBzMSkgewogICAgaWYgKHMxLnNpemUoKSA9PSBzLnNpemUoKSkgewogICAgICAgIHNzLmluc2VydChzMSk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGZvciAobGwgaT0wO2k8cy5zaXplKCk7aSsrKSB7CiAgICAgICAgaWYgKG1wW3NbaV1dID09IDApY29udGludWU7CiAgICAgICAgbXBbc1tpXV0tLTsKICAgICAgICBnbyhzMStzW2ldKTsKICAgICAgICBtcFtzW2ldXSArKzsKICAgIH0KCn0Kdm9pZCBzb2x2ZSgpIHsKICAgIGNpbj4+czsKICAgIGZvciAoY2hhciBjOnMpe21wW2NdKys7fQogICAgZ28oIiIpOwoKICAgIGxsIHNpemU9c3Muc2l6ZSgpOwogICAgY291dDw8c2l6ZTw8ZW5kbDsKICAgIHZlY3RvcjxzdHJpbmc+dihzcy5iZWdpbigpLHNzLmVuZCgpKTsKICAgIHNvcnQodi5iZWdpbigpLHYuZW5kKCkpOwogICAgZm9yIChhdXRvICZpdDp2KWNvdXQ8PGl0PDxlbmRsOwp9CmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgbGwgdD0xIDsKICAgIC8vIGNpbiA+PnQ7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgYW5zPTA7CiAgICAgICAgc29sdmUoKTsKICAgIH0KfQ==