import java.io.*;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
   

    static long[][] dp=new long[20][20];
    static int[] a=new int[20];
    static long dfs(int pos,int pre,boolean status,boolean limit){
   
        if(pos<0){
   
            return 1;
        }
        //status true表示没有前导零
        if(status && !limit &&dp[pos][pre]!=-1){
   
            return dp[pos][pre];
        }
        int up=limit?a[pos]:9;
        long ans=0;
        if(status){
   
            for(int i=0;i<=up;i++){
   
                if(Math.abs(i-pre)<2){
   
                    continue;
                }
                ans+=dfs(pos-1,i,true,limit&&(i==up));
            }
        }else{
   
            for(int i=0;i<=up;i++){
   
                ans+=dfs(pos-1,i,i!=0,limit&&(i==up));
            }
        }
        if(status && !limit){
   
            dp[pos][pre]=ans;
        }
        return ans;
    }
    static long solve(long x){
   
        int len=0;
        while(x>0){
   
            a[len++]=(int)(x%10);
            x/=10;
        }
        for(int i=0;i<20;i++){
   
            for(int j=0;j<20;j++){
   
                dp[i][j]=-1;
            }
        }
        return dfs(len-1,0,false,true);
    }
    public static void main(String[] args) {
   
        Scanner cin=new Scanner(System.in);
        long l=cin.nextLong();
        long r=cin.nextLong();
        long ans=solve(r)-solve(l-1);
        System.out.println(ans);
    }
}