#include <bits/stdc++.h>
#include <cstdio>
#include <cmath>
using namespace std;

string src;
inline bool enc(string s){
	int done;
	done = 1;
	for(int i = 0 ; i < s.size() ; i++){
		if( !(done >> (s[i]-'a') & 1) ){
			done |= 1 << (s[i]-'a');
			s[i]--;
		}
		if( src[i] != s[i] ) return false;
	}
	return true;
}

int main(){
	while(cin >> src && src!= "#"){
		vector<string> v;
		for(int i = 0 ; i < (1<<src.size()) ; i++){
			string dst = src;
			for(int j = 0 ; j < src.size() ; j++)
				if( dst[j] != 'z' && (i >> j & 1) ){
					dst[j]++;
				}
			if( enc(dst) ){
				v.push_back(dst);
			}
		}
		sort(v.begin(),v.end());
		v.erase(unique(v.begin(),v.end()),v.end());
		cout << v.size() << endl;
		if( v.size() <= 10 ){
			for( auto x : v ) cout << x << endl;
		}else{
			for(int j = 0 ; j < 5 ; j++) cout << v[j] << endl;
			for(int j = 0 ; j < 5 ; j++) cout << v[v.size()-5+j] << endl;
		}
	}
}