#include<bits/stdc++.h>
using namespace std;
string s;
int n, visited[11], x[11]; // x[] để lưu hoán vị
vector<string> ans;
void btk(int i){ // i có vai trò là vị trí hoán vị đang xét tới
for(int j = 1; j <= n; j++){ // xét các số có thể gán vào vị trí i
if(visited[j] == false){
visited[j] = true;
x[i] = j;
if(i == n){ // đã duyệt hết các vị trí trong hoán vị
string tmp = "";
for(int k = 1; k <= n; k++){
tmp += s[x[k]];
}
ans.push_back(tmp);
}
else btk(i+1);
visited[j] = false;
}
}
}
int main(){
cin >> s;
n = s.size();
s = ' ' + s;
btk(1);
sort(ans.begin(), ans.end());
ans.push_back(".");
vector<string> c;
for(int i = 0; i < ans.size()-1; i++){
if(ans[i] != ans[i+1]){
c.push_back(ans[i]);
}
}
cout << c.size() << '\n';
for(int i = 0; i < c.size(); i++){
cout << c[i] << '\n';
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJpbmcgczsKaW50IG4sIHZpc2l0ZWRbMTFdLCB4WzExXTsgLy8geFtdIMSR4buDIGzGsHUgaG/DoW4gduG7iwp2ZWN0b3I8c3RyaW5nPiBhbnM7Cgp2b2lkIGJ0ayhpbnQgaSl7IC8vIGkgY8OzIHZhaSB0csOyIGzDoCB24buLIHRyw60gaG/DoW4gduG7iyDEkWFuZyB4w6l0IHThu5tpCiAgICBmb3IoaW50IGogPSAxOyBqIDw9IG47IGorKyl7IC8vIHjDqXQgY8OhYyBz4buRIGPDsyB0aOG7gyBnw6FuIHbDoG8gduG7iyB0csOtIGkKICAgICAgICBpZih2aXNpdGVkW2pdID09IGZhbHNlKXsKICAgICAgICAgICAgdmlzaXRlZFtqXSA9IHRydWU7CiAgICAgICAgICAgIHhbaV0gPSBqOwogICAgICAgICAgICBpZihpID09IG4peyAvLyDEkcOjIGR1eeG7h3QgaOG6v3QgY8OhYyB24buLIHRyw60gdHJvbmcgaG/DoW4gduG7iwogICAgICAgICAgICAgICAgc3RyaW5nIHRtcCA9ICIiOwogICAgICAgICAgICAgICAgZm9yKGludCBrID0gMTsgayA8PSBuOyBrKyspewogICAgICAgICAgICAgICAgICAgIHRtcCArPSBzW3hba11dOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYW5zLnB1c2hfYmFjayh0bXApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgYnRrKGkrMSk7CiAgICAgICAgICAgIHZpc2l0ZWRbal0gPSBmYWxzZTsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCl7CiAgICBjaW4gPj4gczsKICAgIG4gPSBzLnNpemUoKTsKICAgIHMgPSAnICcgKyBzOwogICAgYnRrKDEpOwogICAgc29ydChhbnMuYmVnaW4oKSwgYW5zLmVuZCgpKTsKICAgIGFucy5wdXNoX2JhY2soIi4iKTsKICAgIHZlY3RvcjxzdHJpbmc+IGM7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgYW5zLnNpemUoKS0xOyBpKyspewogICAgICAgIGlmKGFuc1tpXSAhPSBhbnNbaSsxXSl7CiAgICAgICAgICAgIGMucHVzaF9iYWNrKGFuc1tpXSk7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBjLnNpemUoKSA8PCAnXG4nOwogICAgZm9yKGludCBpID0gMDsgaSA8IGMuc2l6ZSgpOyBpKyspewogICAgICAgIGNvdXQgPDwgY1tpXSA8PCAnXG4nOwogICAgfQp9Cg==