#include <iostream>
using namespace std;

void getnumvariations(int a[],char ch,int *l)
{
	switch (ch)
	{
		case '0':
		a[1]=0;
		*l=1;
		break;
		
		case '1':
		a[1]=0;
		a[2]=1;
		a[3]=3;
		a[4]=5;
		a[5]=7;
		a[6]=9;
		a[7]=11;
		a[8]=13;
		*l=8;
		break;
		
		case '2':
		a[1]=0;
		a[2]=2;
		a[3]=3;
		a[4]=6;
		a[5]=7;
		a[6]=10;
		a[7]=11;
		a[8]=14;
		*l=8;
		break;
		
		case '3':
		a[1]=0;
		a[2]=3;
		a[3]=7;
		a[4]=11;
		*l=4;
		break;
		
		case '4':
		a[1]=0;
		a[2]=4;
		a[3]=5;
		a[4]=6;
		a[5]=7;
		a[6]=12;
		a[7]=13;
		a[8]=14;
		*l=8;
		break;
		
		case '5':
		a[1]=0;
		a[2]=5;
		a[3]=7;
		a[4]=13;
		*l=4;
		break;
		
		case '6':
		a[1]=0;
		a[2]=6;
		a[3]=7;
		a[4]=14;
		*l=4;
		break;
		
		case '7':
		a[1]=0;
		a[2]=7;
		*l=2;
		break;
		
		case '8':
		a[1]=0;
		a[2]=8;
		a[3]=9;
		a[4]=10;
		a[5]=11;
		a[6]=12;
		a[7]=13;
		a[8]=14;
		*l=8;
		break;
		
		case '9':
		a[1]=0;
		a[2]=9;
		a[3]=11;
		a[4]=13;
		*l=4;
		break;
		
		case 'A':
		a[1]=0;
		a[2]=10;
		a[3]=11;
		a[4]=14;
		*l=4;
		break;
		
		case 'B':
		a[1]=0;
		a[2]=11;
		*l=2;
		break;
		
		case 'C':
		a[1]=0;
		a[2]=12;
		a[3]=13;
		a[4]=14;
		*l=4;
		break;
		
		case 'D':
		a[1]=0;
		a[2]=13;
		*l=2;
		break;
		
		case 'E':
		a[1]=0;
		a[2]=14;
		*l=2;
		break;
		
	}
}

void getsumvariations(int a[],string s,int *l)
{
	int b[10],c[10],i,j,br=1;
	int l1,l2;
	
	if (s.length()==1)
	{
		getnumvariations(a,s[0],&l1);
	}
	if (s.length()==2)
	{
		getnumvariations(b,s[0],&l1);
		getnumvariations(c,s[1],&l2);
		
		for (i=1;i<=l1-1;i++)
		b[i]=b[i+1];
		
		l1--;
		
	///	for (i=1;i<=l1;i++)
	///	{
	///		cout<<b[i]<<" ";
    ///	}
	///	cout<<endl;
	///	for (i=1;i<=l2;i++)
	///	{
	///		cout<<c[i]<<" ";
	///	}
	///	cout<<endl;
		
		for (i=1;i<=l1;i++)
		{
			if (b[i]>3)
			break;
			
			for (j=1;j<=l2;j++)
			{
				a[br]=b[i]*15+c[j];
				///cout<<"a["<<br<<"]="<<b[i]*15+c[j]<<endl;
				br++;
			}
		}
	}
	*l=br-1;
	
}

string cutstupidzeros(string s)
{
	int i,l=0;
	string a;
	for (i=0;i<=s.length();i++)
	{
		if (s[i]=='0')
		{
			l++;
		}
		else
		{
			break;
		}
	}
	for (i=l;i<=s.length();i++)
	{
		a=a+s[i];
	}
	return a;
}

int main()
{
	string a;
	string code;
	string sum;
	int i,j,i2,j2,i3,br=0;
	int sumvariations[60],lsum;
	int numvariations[5][10],lnum[5];
	
	cin>>a;
	code=code+a[0];
	code=code+a[1];
	code=code+a[2];
	code=code+a[3];
	
	for (i=4;i<=a.length()-1;i++)
	{
		sum=sum+a[i];
	}
	cutstupidzeros(sum);
	
	///cout<<sum<<" sum"<<endl;
	///cout<<code<<" code"<<endl;
	
	getsumvariations(sumvariations,sum,&lsum);
	getnumvariations(numvariations[1],code[0],&lnum[1]);
	getnumvariations(numvariations[2],code[1],&lnum[2]);
	getnumvariations(numvariations[3],code[2],&lnum[3]);
	getnumvariations(numvariations[4],code[3],&lnum[4]);
	
	///for (i=1;i<=lsum;i++)
	///cout<<sumvariations[i]<<" ";
	///cout<<endl;
	
	for (i=1;i<=lnum[1];i++)
	{
		for (j=1;j<=lnum[2];j++)
		{
			for (i2=1;i2<=lnum[3];i2++)
			{
				for (j2=1;j2<=lnum[4];j2++)
				{
					for (i3=1;i3<=lsum;i3++)
					{
						if ( numvariations[1][i]+numvariations[2][j]+numvariations[3][i2]+numvariations[4][j2] == sumvariations[i3] )
						{
							br++;
							///cout<<numvariations[1][i]<<"+"<<numvariations[2][j]<<"+"<<numvariations[3][i2]<<"+"<<numvariations[4][j2]<<endl;
						}
					}
				}
			}
		}
	}
	
	cout<<br<<endl;
	return 0;
}











