int a[10],dp[10][10];
int dfs(int pos,int pre,bool eq,bool zero){
if(!pos)return 1;
if(!eq&&~dp[pos][pre])return dp[pos][pre];
int ans=0,v=eq?a[pos]:9;
_rep(i,0,v){
if(!zero&&abs(i-pre)<2)
continue;
ans+=dfs(pos-1,i,eq&&i==a[pos],zero&&i==0);
}
if(!eq&&!zero)dp[pos][pre]=ans;
return ans;
}
int solve(int n){
int len=0;
mem(dp,-1);
while(n){
a[++len]=n%10;
n/=10;
}
return dfs(len,0,true,true);
}
int main()
{
int a=read_int(),b=read_int();
printf("%d",solve(b)-solve(a-1));
return 0;
}