#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

typedef long long LL;

int n,D,d[20],g[20];

LL ans,ten[20];

void dfs(int x,LL m,LL s)
{
	if (x==n/2)
	{
		if (m==D)
		{
			if (n&1) ans+=s*10;else ans+=s;
		}
		return;
	}
	for (int i=-9;i<10;i++)
	{
		LL cur=m+(ten[n-1-x]-ten[x])*i;
		if (D%ten[x+1]==(cur%ten[x+1]+ten[x+1])%ten[x+1])
		{
			int pl=g[i+9];
			if (x==0) pl--;
			dfs(x+1,cur,s*pl);
		}
	}
}

int main()
{
	scanf("%d",&D);
	ten[0]=1;
	for (int i=1;i<19;i++) ten[i]=ten[i-1]*10;
	for (int i=0;i<10;i++) for (int j=0;j<10;j++) g[i-j+9]++;
	for (n=1;n<=18;n++) dfs(0,0,1);
	printf("%lld\n",ans);
	return 0;
}