#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
using namespace std;
typedef unsigned long long ll;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF = 998244353;
bool flag[10];
int que[10];
int ans, num;
void judge() {
int Li, Lk, Lj, di, dj, i;
for (di = 1; di < 9; ++di) {
Li = 0;
for (i = 1; i <= di; ++i) {
Li = Li * 10 + que[i];
}
for (dj = 1; di + dj < 9; ++dj) {
Lj = 0;
for (i = di + 1; i <= di + dj; ++i) {
Lj = Lj * 10 + que[i];
}
Lk = 0;
for (i = di + dj + 1; i < 10; ++i) {
Lk = Lk * 10 + que[i];
}
if (Li * Lj - Lk == num) {
++ans;
}
}
}
}
void dfs(int number) {
if (number > 9) {
judge();
}
int i;
for (i = 1; i < 10; ++i) {
if (!flag[i]) {
flag[i] = true;
que[number] = i;
dfs(number + 1);
flag[i] = false;
}
}
}
int main()
{
cin >> num;
dfs(1);
cout << ans << endl;
return 0;
}