#include <bits/stdc++.h>
#define int long long
using namespace std;
int sw[1001];
int dp[1001][10][2];
string lef, rig;
int k, l;
int dfs(int x, int lst, int llst, bool ok, bool have_llst, bool to_max)
{
if(x == 0)
return ok;
if(!to_max && dp[x][lst][ok] != -1)
return dp[x][lst][ok];
int maxn = to_max ? sw[x] : 9;
int r = 0;
for(int i = 0; i <= maxn; i = i + 1)
r = (r + dfs(x - 1, i, have_llst ? lst : -1, ok || ((i == lst) && have_llst) || ((i == llst) && have_llst), have_llst || (i != 0), to_max && (maxn == i)) );
if(!to_max && have_llst && llst != -1)
dp[x][lst][ok] = r;
return r;
}
int solve(string s)
{
int len = 0, slen = s.size() - 1;
while(slen >= 0)
sw[++ len] = s[slen] - '0', slen --;
while(!sw[len])
len --;
memset(dp, -1, sizeof(dp));
return dfs(len, -1, -1, 0, 0, 1);
}
signed main()
{
int ll, rr;
cin >> ll >> rr;
int tmp = 0;
if(ll == 0)
ll = 2, tmp = 2;
if(ll == 1)
ll = 2, tmp = 1;
lef = to_string(ll);
rig = to_string(rr);
k = 1;
l = lef.length();
while(lef[l - k] == '0' && l > k)
lef[l - k] = '9', k ++;
lef[l - k] -= 1;
printf("%lld\n", (rr - ll + tmp + 1 - (solve(rig) - solve(lef))));
return 0;
}