#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int t;
long long dp[19][19][2005];
long long l, r;
int digit[20];
long long dfs(int len,...int if4..., bool limit)
{
if (len == 0)
return 1; //个位
if (!limit && dp[len][...])
return dp[len][...]; //dp数组的内容应和dfs调用参数的内容相同,除了是否达到上限
long long cnt = 0;
int up_bound = (limit ? digit[len] : 9);
for (int i = 0; i <= up_bound; i++)
{
if(...) continue; //剪枝
...;
cnt += dfs(len-1, ..., limit && i == up_bound);
}
if (!limit) //完整状态
dp[len][...] = cnt;
return cnt;
}
long long solve(long long x)
{
int k = 0;
while (x)
{
digit[++k] = x % 10;
x /= 10;
}
return dfs(k,...,1)
}
int main()
{
memset(dp, 0, sizeof(dp));
scanf("%lld%lld", &l, &r); //有些题目其实并不需要用到long long
printf("%lld\n", solve(r) - solve(l - 1)); //只有满足区间减法才能用
return 0;
}