#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
vector<int> digit;
vector<int> getDigit(ll N) {
vector<int> ans;
for (; N > 0; N /= 10) ans.push_back(N % 10);
return ans;
}
ll memo[15][2][126][127];
// r là số dư của phần prefix khi mod cho target_sum_digit
ll dp(int idx, bool smaller, int r, int sum_digit, int target_sum_digit) {
if (idx == -1) return (r == 0 && sum_digit == target_sum_digit);
ll& ans = memo[idx][smaller][r][sum_digit];
if (ans != -1) return ans;
ans = 0;
int max_digit = (smaller) ? 9 : digit[idx];
for (int i = 0; i <= max_digit; i++) {
if (sum_digit + i <= target_sum_digit) {
ans += dp(idx - 1, smaller | (i < digit[idx]), (r * 10 + i) % target_sum_digit, sum_digit + i, target_sum_digit);
}
}
return ans;
}
ll solve(ll N, int target_sum_digit) {
digit = getDigit(N);
memset(memo, -1, sizeof memo);
return dp(digit.size() - 1, 0, 0, 0, target_sum_digit);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll N;
cin >> N;
ll ans = 0;
for (int sum_digit = 1; sum_digit <= 126; sum_digit++) {
ans += solve(N, sum_digit);
}
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKdmVjdG9yPGludD4gZGlnaXQ7IAoKdmVjdG9yPGludD4gZ2V0RGlnaXQobGwgTikgewoJdmVjdG9yPGludD4gYW5zOyAKCWZvciAoOyBOID4gMDsgTiAvPSAxMCkgYW5zLnB1c2hfYmFjayhOICUgMTApOyAKCXJldHVybiBhbnM7IAp9CgpsbCBtZW1vWzE1XVsyXVsxMjZdWzEyN107IAoKLy8gciBsw6Agc+G7kSBkxrAgY+G7p2EgcGjhuqduIHByZWZpeCBraGkgbW9kIGNobyB0YXJnZXRfc3VtX2RpZ2l0CmxsIGRwKGludCBpZHgsIGJvb2wgc21hbGxlciwgaW50IHIsIGludCBzdW1fZGlnaXQsIGludCB0YXJnZXRfc3VtX2RpZ2l0KSB7CglpZiAoaWR4ID09IC0xKSByZXR1cm4gKHIgPT0gMCAmJiBzdW1fZGlnaXQgPT0gdGFyZ2V0X3N1bV9kaWdpdCk7IAoKCWxsJiBhbnMgPSBtZW1vW2lkeF1bc21hbGxlcl1bcl1bc3VtX2RpZ2l0XTsgCglpZiAoYW5zICE9IC0xKSByZXR1cm4gYW5zOyAKCglhbnMgPSAwOyAKCWludCBtYXhfZGlnaXQgPSAoc21hbGxlcikgPyA5IDogZGlnaXRbaWR4XTsKCWZvciAoaW50IGkgPSAwOyBpIDw9IG1heF9kaWdpdDsgaSsrKSB7CgkJaWYgKHN1bV9kaWdpdCArIGkgPD0gdGFyZ2V0X3N1bV9kaWdpdCkgewoJCQlhbnMgKz0gZHAoaWR4IC0gMSwgc21hbGxlciB8IChpIDwgZGlnaXRbaWR4XSksIChyICogMTAgKyBpKSAlIHRhcmdldF9zdW1fZGlnaXQsIHN1bV9kaWdpdCArIGksIHRhcmdldF9zdW1fZGlnaXQpOyAKCQl9Cgl9CgoJcmV0dXJuIGFuczsgCn0KCmxsIHNvbHZlKGxsIE4sIGludCB0YXJnZXRfc3VtX2RpZ2l0KSB7CglkaWdpdCA9IGdldERpZ2l0KE4pOyAKCW1lbXNldChtZW1vLCAtMSwgc2l6ZW9mIG1lbW8pOyAKCXJldHVybiBkcChkaWdpdC5zaXplKCkgLSAxLCAwLCAwLCAwLCB0YXJnZXRfc3VtX2RpZ2l0KTsgCn0KCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyAKCWNpbi50aWUobnVsbHB0cik7IAkKCWxsIE47IAoJY2luID4+IE47IAoJbGwgYW5zID0gMDsgIAoJZm9yIChpbnQgc3VtX2RpZ2l0ID0gMTsgc3VtX2RpZ2l0IDw9IDEyNjsgc3VtX2RpZ2l0KyspIHsKCQlhbnMgKz0gc29sdmUoTiwgc3VtX2RpZ2l0KTsgCgl9CgoJY291dCA8PCBhbnMgPDwgJ1xuJzsgCn0K