#include <bits/stdc++.h>
using namespace std;
#define DragonBui 0
#define Task "Test"
#define int long long
#define el '\n'
#define cnt_bit_1 __builtin_popcountll
#define float double
#define IO freopen(Task".inp","r",stdin); freopen(Task".out","w",stdout);
#define pii pair<int,int>
#define fi first
#define se second
#define pb push_back
const int N=2e5+5;
const int INF=1e18;
const int MOD=1e9+7;
int n , cL;
string s;
int f[15] , cnt[10];
int ans = 0;
void precompute()
{
f[0] = 1;
for(int i = 1; i <= 13; i++) f[i] = f[i - 1] * i;
}
int calc()
{
int id = f[cL];
for(int i = 0; i <= 9; i++) id /= f[cnt[i]];
int w = 0;
if(cnt[0] > 0)
{
w = f[cL - 1];
cnt[0]--;
for (int i = 0; i <= 9; i++) w /= f[cnt[i]];
cnt[0]++;
}
return id - w;
}
int cntles()
{
int res = 0;
vector<int> cur_cnt(10);
for(int i = 0; i <= 9; i++) cur_cnt[i] = cnt[i];
for(int i = 0; i < cL; i++)
{
int cdr = s[i] - '0';
for(int d = 0; d < cdr; d++)
{
if(i == 0 && d == 0) continue;
if(cur_cnt[d] > 0)
{
cur_cnt[d]--;
int id = f[cL - 1 - i];
for (int x = 0; x <= 9; x++) id /= f[cur_cnt[x]];
res += id;
cur_cnt[d]++;
}
}
if(cur_cnt[cdr] > 0) cur_cnt[cdr]--;
else break;
if(i == cL - 1) res++;
}
return res;
}
void backtrack(int digit, int rem, int sum, int nw1)
{
if(rem == 0)
{
if(sum > 0 && sum % cL == 0 && nw1 % sum == 0)
{
if(cL < n) ans += calc();
else ans += cntles();
}
return;
}
if(digit > 9) return;
for(int k = 0; k <= rem; k++)
{
cnt[digit] = k;
int nw = nw1;
if(k > 0)
{
if(digit == 0) nw = 0;
else
{
for(int i = 0; i < k; i++) nw *= digit;
}
}
backtrack(digit + 1, rem - k, sum + digit * k, nw);
cnt[digit] = 0;
}
}
signed main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
//IO
precompute();
cin >> s;
n = s.size();
for(int L = 1; L <= n; L++)
{
cL = L;
backtrack(0, L, 0, 1);
}
cout << ans;
return (DragonBui);
}
/// Long Bùi
/// TrQuocann - TH & THCS & THPT SAO VIET - 10a1
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIERyYWdvbkJ1aSAwCiNkZWZpbmUgVGFzayAiVGVzdCIKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZWwgJ1xuJwojZGVmaW5lIGNudF9iaXRfMSBfX2J1aWx0aW5fcG9wY291bnRsbAojZGVmaW5lIGZsb2F0IGRvdWJsZQojZGVmaW5lIElPIGZyZW9wZW4oVGFzayIuaW5wIiwiciIsc3RkaW4pOyBmcmVvcGVuKFRhc2siLm91dCIsInciLHN0ZG91dCk7CiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHBiIHB1c2hfYmFjawoKY29uc3QgaW50IE49MmU1KzU7CmNvbnN0IGludCBJTkY9MWUxODsKY29uc3QgaW50IE1PRD0xZTkrNzsKCmludCBuICwgY0w7CnN0cmluZyBzOwppbnQgZlsxNV0gLCBjbnRbMTBdOwppbnQgYW5zID0gMDsKCnZvaWQgcHJlY29tcHV0ZSgpCnsKICAgIGZbMF0gPSAxOwogICAgZm9yKGludCBpID0gMTsgaSA8PSAxMzsgaSsrKSBmW2ldID0gZltpIC0gMV0gKiBpOwp9CgppbnQgY2FsYygpCnsKICAgIGludCBpZCA9IGZbY0xdOwogICAgZm9yKGludCBpID0gMDsgaSA8PSA5OyBpKyspIGlkIC89IGZbY250W2ldXTsKCiAgICBpbnQgdyA9IDA7CiAgICBpZihjbnRbMF0gPiAwKQogICAgewogICAgICAgIHcgPSBmW2NMIC0gMV07CiAgICAgICAgY250WzBdLS07CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gOTsgaSsrKSB3IC89IGZbY250W2ldXTsKICAgICAgICBjbnRbMF0rKzsKICAgIH0KICAgIHJldHVybiBpZCAtIHc7Cn0KCmludCBjbnRsZXMoKQp7CiAgICBpbnQgcmVzID0gMDsKICAgIHZlY3RvcjxpbnQ+IGN1cl9jbnQoMTApOwogICAgZm9yKGludCBpID0gMDsgaSA8PSA5OyBpKyspIGN1cl9jbnRbaV0gPSBjbnRbaV07CgogICAgZm9yKGludCBpID0gMDsgaSA8IGNMOyBpKyspCiAgICB7CiAgICAgICAgaW50IGNkciA9IHNbaV0gLSAnMCc7CgogICAgICAgIGZvcihpbnQgZCA9IDA7IGQgPCBjZHI7IGQrKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKGkgPT0gMCAmJiBkID09IDApIGNvbnRpbnVlOwogICAgICAgICAgICBpZihjdXJfY250W2RdID4gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY3VyX2NudFtkXS0tOwogICAgICAgICAgICAgICAgaW50IGlkID0gZltjTCAtIDEgLSBpXTsKICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDw9IDk7IHgrKykgaWQgLz0gZltjdXJfY250W3hdXTsKICAgICAgICAgICAgICAgIHJlcyArPSBpZDsKICAgICAgICAgICAgICAgIGN1cl9jbnRbZF0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYoY3VyX2NudFtjZHJdID4gMCkgY3VyX2NudFtjZHJdLS07CiAgICAgICAgZWxzZSBicmVhazsKCiAgICAgICAgaWYoaSA9PSBjTCAtIDEpIHJlcysrOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKdm9pZCBiYWNrdHJhY2soaW50IGRpZ2l0LCBpbnQgcmVtLCBpbnQgc3VtLCBpbnQgbncxKQp7CiAgICBpZihyZW0gPT0gMCkKICAgIHsKICAgICAgICBpZihzdW0gPiAwICYmIHN1bSAlIGNMID09IDAgJiYgbncxICUgc3VtID09IDApCiAgICAgICAgewogICAgICAgICAgICBpZihjTCA8IG4pIGFucyArPSBjYWxjKCk7CiAgICAgICAgICAgIGVsc2UgYW5zICs9IGNudGxlcygpOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYoZGlnaXQgPiA5KSByZXR1cm47CgogICAgZm9yKGludCBrID0gMDsgayA8PSByZW07IGsrKykKICAgIHsKICAgICAgICBjbnRbZGlnaXRdID0gazsKCiAgICAgICAgaW50IG53ID0gbncxOwogICAgICAgIGlmKGsgPiAwKQogICAgICAgIHsKICAgICAgICAgICAgaWYoZGlnaXQgPT0gMCkgbncgPSAwOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBrOyBpKyspIG53ICo9IGRpZ2l0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBiYWNrdHJhY2soZGlnaXQgKyAxLCByZW0gLSBrLCBzdW0gKyBkaWdpdCAqIGssIG53KTsKICAgICAgICBjbnRbZGlnaXRdID0gMDsKICAgIH0KfQoKc2lnbmVkIG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIC8vSU8KCiAgICBwcmVjb21wdXRlKCk7CgogICAgY2luID4+IHM7CgogICAgbiA9IHMuc2l6ZSgpOwoKICAgIGZvcihpbnQgTCA9IDE7IEwgPD0gbjsgTCsrKQogICAgewogICAgICAgIGNMID0gTDsKICAgICAgICBiYWNrdHJhY2soMCwgTCwgMCwgMSk7CiAgICB9CgogICAgY291dCA8PCBhbnM7CgogICAgcmV0dXJuIChEcmFnb25CdWkpOwp9CgovLy8gTG9uZyBCw7lpCi8vLyBUclF1b2Nhbm4gLSBUSCAmIFRIQ1MgJiBUSFBUIFNBTyBWSUVUIC0gMTBhMQo=