#include<iostream>
#include<algorithm>
using namespace std;
#define LL long long
LL f[12][10],dp[12],digit[13];
//f[i][j]表示第i位为j,且长度为i的windy数的个数
//d[i]表示长度为i的windy数的个数
LL cal(LL n)
{
if(n<10) return n-1;
int len=0,i,j;
LL ans=0;
while(n)
{
digit[++len]=n%10;
n/=10;
}
for(i=1;i<len;++i) //累加长度为i的windy数
ans+=dp[i];
for(i=len; i; --i)
{
if(i==len)
{
for(j=1; j<digit[i]; ++j)
ans+=f[i][j]; //i长度,第i位为j的windy数的个数
}
else
{
for(j=0; j<digit[i]; ++j)
{
if(abs(j-digit[i+1])>1)
ans+=f[i][j];
}
}
if(i!=len&&abs(digit[i]-digit[i+1])<=1) break;
//如果随便找到2个位置出现相差小于2的情况则跳出,前面的数都固定了。
}
return ans;
}
int main()
{
LL A,B;
int i,j,k;
for(i=0; i<10; ++i)
f[1][i]=1;
for(i=2; i<11; ++i)
for(j=0; j<10; ++j)
for(k=0; k<10; ++k)
if(abs(j-k)>1)
f[i][j]+=f[i-1][k];
for(i=1;i<=10;++i)
for(j=1;j<10;++j)
dp[i]+=f[i][j];
while(cin>>A>>B)
{
cout<<cal(B+1)-cal(A)<<endl;
}
}