#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';
    }
}
