#include <bits/stdc++.h>
using namespace std;

vector<int> can;
int many;

long long mem[30][2][2];

long long ret(int poz, int equal, int some, vector<int> d) {
    if(mem[poz][equal][some] >= 0)
        return mem[poz][equal][some];
    
    long long &ans = mem[poz][equal][some];
    ans = 0;
    
    if(poz == int(d.size())) {
        if(some)
            return ans = 1;
        return 0;
    } 
    
    for(auto c : can) {
        if(equal) {
            if(c > d[poz])
                continue;
            if(c == d[poz])
                ans += ret(poz + 1, 1, 1, d);
            else
                ans += ret(poz + 1, 0, 1, d);
        } else {
            ans += ret(poz + 1, 0, 1, d);
        }
    }
    
    if(some == 0)
        ans += ret(poz + 1, 0, 0, d);

    return ans;
}

long long solve(long long n) {
    if(n == 0)
        return 0LL;

    vector<int> d;

    while(n) {
        d.push_back(n % 10);
        n /= 10;
    }

    reverse(d.begin(), d.end());
    memset(mem, -1, sizeof(mem));

    return ret(0, 1, 0, d);
}

int brut(int a, int b) {
    int ans = 0;
    for(int i = a; i < b; ++i) {
        int temp = i;
        bool bad = false;
        while(temp > 0) {
            if(temp % 10 < a)
                bad = true;
            temp /= 10;
        }

        if(not bad)
            ans++;
    }

    return ans;
}

int main() {
    long long a, b; cin >> a >> b;

    if(a >= 10) {
        cout << 0 << "\n";
        return 0;
    }

    for(int i = 1; i <= 9; ++i) 
        if(i >= a)
            can.push_back(i);
    many = can.size();
    
    long long ans = solve(b - 1) - solve(a - 1);
    cout << ans << "\n";
}