#include <bits/stdc++.h>

using namespace std;

vector<string> ans;
string str;


bool comp(string a, string b)
{
  for(int i = 0; i < a.size(); i++){
    if(a[i] < b[i]) return true;
  }
  return false;
}

void solve(int idx, string s)
{
  if(idx == s.size()){
    if(s != str) ans.push_back(s);
    return;
  }
  if(s[idx] < 'z' && s.find(s[idx]) == idx){
    if(s[idx] == 'a'){
      solve(idx + 1, s);
      s[idx]++;
      solve(idx + 1, s);
    } else {
      s[idx]++;
      solve(idx + 1, s);
    }
  } else {
    solve(idx + 1, s);
  }
  if(s[idx] < 'z' && s[idx] == str[idx]){
    if(s[idx] == 'a'){
      solve(idx + 1, s);
      s[idx]++;
      solve(idx + 1, s);
    } else {
      s[idx]++;
      solve(idx + 1, s);
    }
  }
  return;
}

int main()
{
  while(cin >> str, str != "#"){
    solve(0, str);
    sort(ans.begin(), ans.end());
    cout << ans.size() << endl;
    if(ans.size() <= 5){
      for(int i = 0; i < ans.size(); i++){
	cout << ans[i] << endl;
      }
    } else {
      for(int i = 0; i < ans.size(); i++){
	if(i < 5 || ans.size()-5 <= i) cout << ans[i] << endl;
      }
    }
    ans.clear();
  }
  return 0;
}