#include<cstdio>
#include<string>
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
#include<cstdlib>

using namespace std;

vector<string> res;
int flag[50],flag2[50],len;
string str;
void Enc(int x){
		if(x==-1){
			for(int i=0;i<26;i++)if(flag[i]>=1 && flag2[i]==0)return;
			res.push_back(str);
		}
		else{
			if(str[x]<'z' && flag2[str[x]+1-'a']==0){
				str[x]++;
				flag2[str[x]-'a']=1;
				Enc(x-1);
				flag2[str[x]-'a']=0;
				str[x]--;
			}
			if(flag2[str[x]-'a']>=1)return;
			if(str[x]>'a'){
				flag[str[x]-'a']++;
				Enc(x-1);
				flag[str[x]-'a']--;
			}else Enc(x-1);
		}
}

int main(void){
	while(1){
		cin >> str;
		if(str=="#")break;
		res.clear();
		len=str.size();
		memset(flag,0,sizeof(flag));
		memset(flag2,0,sizeof(flag2));
		Enc(len-1);
		printf("%d\n",res.size());
		sort(res.begin(),res.end());
		if(res.size()<=10)for(int i=0;i<res.size();i++)cout << res[i] << endl;
		else{
			for(int i=0;i<5;i++)cout << res[i] << endl;
			for(int i=res.size()-5;i<res.size();i++)cout << res[i] << endl;
		}
	}
	return 0;
}