package jp.funnything.competition.util;

import java.math.BigInteger;

/**
 * Utility for BigInteger
 */
public class BI {
    public static BigInteger ZERO = BigInteger.ZERO;
    public static BigInteger ONE = BigInteger.ONE;

    public static BigInteger add( final BigInteger x , final BigInteger y ) {
        return x.add( y );
    }

    public static BigInteger add( final BigInteger x , final long y ) {
        return add( x , v( y ) );
    }

    public static BigInteger add( final long x , final BigInteger y ) {
        return add( v( x ) , y );
    }

    public static int cmp( final BigInteger x , final BigInteger y ) {
        return x.compareTo( y );
    }

    public static int cmp( final BigInteger x , final long y ) {
        return cmp( x , v( y ) );
    }

    public static int cmp( final long x , final BigInteger y ) {
        return cmp( v( x ) , y );
    }

    public static BigInteger div( final BigInteger x , final BigInteger y ) {
        return x.divide( y );
    }

    public static BigInteger div( final BigInteger x , final long y ) {
        return div( x , v( y ) );
    }

    public static BigInteger div( final long x , final BigInteger y ) {
        return div( v( x ) , y );
    }

    public static BigInteger mod( final BigInteger x , final BigInteger y ) {
        return x.mod( y );
    }

    public static BigInteger mod( final BigInteger x , final long y ) {
        return mod( x , v( y ) );
    }

    public static BigInteger mod( final long x , final BigInteger y ) {
        return mod( v( x ) , y );
    }

    public static BigInteger mul( final BigInteger x , final BigInteger y ) {
        return x.multiply( y );
    }

    public static BigInteger mul( final BigInteger x , final long y ) {
        return mul( x , v( y ) );
    }

    public static BigInteger mul( final long x , final BigInteger y ) {
        return mul( v( x ) , y );
    }

    public static BigInteger sub( final BigInteger x , final BigInteger y ) {
        return x.subtract( y );
    }

    public static BigInteger sub( final BigInteger x , final long y ) {
        return sub( x , v( y ) );
    }

    public static BigInteger sub( final long x , final BigInteger y ) {
        return sub( v( x ) , y );
    }

    public static BigInteger v( final long value ) {
        return BigInteger.valueOf( value );
    }
}

package gcj;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Scanner;

public class RecycledNumbers {
	private String solve(Scanner in) {
		HashSet<Integer> set = new HashSet<Integer>();
		int A = in.nextInt();
		int B = in.nextInt();
		
		int result = 0;
		int numberLen = ((Integer)A).toString().length();
		
		int multiple = 1;
		for (int tt = 1; tt < ((Integer)A).toString().length(); tt++)
			multiple *= 10;
		
		for (int n = A; n < B; n++) {
			if (n / multiple >= 10) multiple *= 10;

			int m = n;
			int d = m % 10;
			m /= 10;
			
			int counter = 0;
			while (counter < numberLen - 1) {
				m += multiple*d;
				if (m > n && m <= B && !set.contains(m)) set.add(m);
				d = m % 10;
				m = m / 10;
				counter++;
			}
			
			result += set.size();
			set.clear();
		}
		return "" + result;
	}
	
	
	/**
	 * @param args
	 * @throws FileNotFoundException 
	 */
	public static void main(String[] args) throws FileNotFoundException {
	    Scanner in = new Scanner(new File("C:\\Users\\User\\Desktop\\dane\\data.in"));//C:\\Users\\User\\workspace\\GoogleCodeJam\\src\\gcj\\data"));//"));
	    PrintWriter out = new PrintWriter("C:\\Users\\User\\Desktop\\dane\\output");//C:\\Users\\User\\workspace\\GoogleCodeJam\\src\\gcj\\output");//"C:\\Users\\User\\Desktop\\dane\\output");
		
	    int T = in.nextInt();
	    in.nextLine();
	
        for (int i = 0; i < T; i++) {
            String s = "Case #" + (i + 1) + ": " + new RecycledNumbers().solve(in);
            out.println(s);
            System.out.println(s);
        }
        out.close();

	}
}
