#include using namespace std; #define MAXL 50 int L; int B[MAXL]; int A; long long P[MAXL]; void transf(long long b) { stringstream ss; ss << b; string s; ss >> s; L = (int) s.size(); for (int i = 0; i < L; i++) { B[i] = s[i] - '0'; } } long long go(int pos) { if (pos == L) { return 1; } long long ret = 0; int numLower = max(0, B[pos] - A); ret += numLower * P[L - pos - 1]; if (A <= B[pos]) { ret += go(pos + 1); } return ret; } long long solve(int a, long long b) { transf(b); P[0] = 1; for (int i = 1; i <= L; i++) { P[i] = P[i - 1] * (10 - a); } A = a; long long ret = go(0); L--; while (L > 0) { for (int i = 0; i < L; i++) { B[i] = 9; } ret += go(0); L--; } return ret; } int main() { // assert(freopen("fiendint.in", "r", stdin)); // assert(freopen("fiendint.out", "w", stdout)); cin.sync_with_stdio(false); long long a, b; cin >> a >> b; long long ans; if (a > 9) { ans = 0; } else { ans = solve(a, b - 1); } cout << ans << endl; return 0; }