#include<iostream.h>
#include<string>
using namespace std;

bool vdigit(string d, string b)
{
	return (d.length() < b.length()) || (d.length() == b.length() && d < b);
}

int base(string d, string b)
{
	int r = vdigit(d,b), l = d.length()-1, e = d.length()-b.length() - 1;
	if(l < 1) return r;
	if(e < 0) e = 0;
	for(int p=l; p>e && vdigit(d.substr(p),b); p--)
		r+=base(d.substr(0,p), b);
	return r;
}

int main()
{
	string l;
	int r = 0, ln, e = 0;
	while(getline(cin,l) && (l != "#"))
	{
		r = 0;
		ln = l.length() - 1;
		e = (ln > 36) ? ln-36 : 0;
		if(ln > 0) for(int p=ln; p>e; p--)
			if(l[p] == '0') continue;
			else r+=base(l.substr(0,p),l.substr(p));
		cout << "The code " << l;
		if(r>0) cout << " can represent " << r << " numbers.";
		else cout << " is invalid.";
		cout << endl;
	}
	return 0;
}

