#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
string s;
int main()
{
	while(cin>>s,s!="#")
	{
		vector<string>ans;
		for(int i=0;i<1<<s.size();i++)
		{
			string t=s;
			int ap=0;
			bool flag=1;
			for(int j=0;flag&&j<s.size();j++)
			{
				if(i>>j&1&&s[j]<'z')t[j]++;
				if(t[j]>'a'&&~ap&1<<t[j]-'a')
				{
					ap|=1<<t[j]-'a';
					flag&=s[j]==t[j]-1;
				}
				else
				{
					flag&=s[j]==t[j];
				}
			}
			if(flag)ans.push_back(t);
		}
		sort(ans.begin(),ans.end());
		ans.erase(unique(ans.begin(),ans.end()),ans.end());
		cout<<ans.size()<<endl;
		if(ans.size()<=10)
		{
			for(string t:ans)cout<<t<<endl;
		}
		else
		{
			for(int i=0;i<5;i++)cout<<ans[i]<<endl;
			for(int i=5;i;i--)cout<<ans[ans.size()-i]<<endl;
		}
	}
}

