package fixjava;

public class StringUtils {

	/** Repeat the given string the requested number of times. */
	public static String repeat(String str, int numTimes) {
		StringBuilder buf = new StringBuilder(Math.max(0, str.length() * numTimes));
		for (int i = 0; i < numTimes; i++)
			buf.append(str);
		return buf.toString();
	}

	/**
	 * Pad the left hand side of a field with the given character. Always adds at least one pad character. If the length of str is
	 * greater than numPlaces-1, then the output string will be longer than numPlaces.
	 */
	public static String padLeft(String str, char padChar, int numPlaces) {
		int bufSize = Math.max(numPlaces, str.length() + 1);
		StringBuilder buf = new StringBuilder(Math.max(numPlaces, str.length() + 1));
		buf.append(padChar);
		for (int i = 1, mi = bufSize - str.length(); i < mi; i++)
			buf.append(padChar);
		buf.append(str);
		return buf.toString();
	}

	/**
	 * Pad the right hand side of a field with the given character. Always adds at least one pad character. If the length of str is
	 * greater than numPlaces-1, then the output string will be longer than numPlaces.
	 */
	public static String padRight(String str, char padChar, int numPlaces) {
		int bufSize = Math.max(numPlaces, str.length() + 1);
		StringBuilder buf = new StringBuilder(Math.max(numPlaces, str.length() + 1));
		buf.append(str);
		buf.append(padChar);
		while (buf.length() < bufSize)
			buf.append(padChar);
		return buf.toString();
	}

	/** Intern all strings in an array, skipping null elements. */
	public static String[] intern(String[] arr) {
		for (int i = 0; i < arr.length; i++)
			arr[i] = arr[i].intern();
		return arr;
	}

	/** Intern a string, ignoring null */
	public static String intern(String str) {
		return str == null ? null : str.intern();
	}

}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package a2012;

import java.util.*;
import java.io.*;
/**
 *
 * @author G
 */
public class C {

    static int[] pot10=new int[]{1,10,100,1000,10000,100000,1000000,10000000};
    static File home=new File("F:/Documents/Downloads/");
    public static void main(String...arg)throws Exception{
        Scanner sc = new Scanner(new File(home,"C-large.in"));
        System.setOut(new PrintStream(new File("c.out")));
        final int casos=sc.nextInt();
        for(int caso=1;caso<=casos;caso++){
            int A=sc.nextInt(),B=sc.nextInt();
            final int digits=(""+A).length();
            int tot=0;
            HashSet<Long> encontrados=new HashSet<Long>(1000);
            for(int n=A;n<=B;n++){
                //System.out.println(e);
                for(int i=1;i<digits;i++){
                    int j=n/pot10[i]+(n%pot10[i])*pot10[digits-i];
                    long t=Math.max(j,n);
                    t*=pot10[digits];
                    t+=Math.min(j,n);
                    if(j>=A&&j<=B&&j!=n&&!encontrados.contains(t)){
                        tot++;
                        encontrados.add(t);
                    }
                    //System.out.println(j);
                }
            }
            System.out.println("Case #"+caso+": "+tot);
        }
        System.out.close();
    }
}
