import java.util.*;
import java.lang.*;
import java.math.*;
import java.io.*;

import static java.lang.Math.*;
import static java.util.Arrays.*;
import static java.util.Collections.*;

public class C{
	Scanner sc=new Scanner(System.in);

	int INF=1<<28;
	double EPS=1e-9;

	int caze, T;
	int A, B;

	void run(){
		T=sc.nextInt();
		for(caze=1; caze<=T; caze++){
			A=sc.nextInt();
			B=sc.nextInt();
			solve();
		}
	}

	void solve(){
		int ans=0;
		for(int n=A; n<=B; n++){
			int digit=(int)(log10(n)+EPS);
			int d=(int)pow(10, digit);
			// debug("n", n);
			for(int m=rot(n, d); m!=n; m=rot(m, d)){
				// debug("m", m);
				if(n<m&&m<=B){
					ans++;
				}
			}
		}
		answer(ans+"");
	}

	int rot(int n, int d){
		return n/10+n%10*d;
	}

	void answer(String s){
		println("Case #"+caze+": "+s);
	}

	void println(String s){
		System.out.println(s);
	}

	void print(String s){
		System.out.print(s);
	}

	void debug(Object... os){
		System.err.println(deepToString(os));
	}

	public static void main(String[] args){
		try{
			System.setIn(new FileInputStream("dat/C-small.in"));
			System.setOut(new PrintStream(new FileOutputStream("dat/C-small.out")));
		}catch(Exception e){}
		new C().run();
		System.out.flush();
		System.out.close();
	}
}

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


public class RecycledNumbers {

	
	public static void main(String[] args) throws FileNotFoundException {

		// ////////////////////////////////////
		// Begin Code Jam regular code //
		// ////////////////////////////////////

		Scanner inFile = new Scanner(new File("C-small-attempt0.in"));
		PrintStream outFile = new PrintStream(new File("C-small0-out.txt"));

		int numCases = inFile.nextInt();
		inFile.nextLine(); // Gets rid of newline char

		// ////////////////////////////////////
		// End Code Jam regular code //
		// ////////////////////////////////////

		for (int i = 1; i <= numCases; i++) {
			int A = inFile.nextInt();
			int B = inFile.nextInt();
			
			int recycleCount = 0;
			for(int n = A; n < B; n++) {
				HashSet<Integer> recycled = new HashSet<Integer>();
				for(int j=1; j<numDigits(n); j++) {
					int shifted = shiftNumPlaces(n,j);
					if(shifted <= B && shifted > n && numDigits(shifted) == numDigits(n) && !recycled.contains(Integer.valueOf(shifted))) {
						recycleCount++;
						recycled.add(Integer.valueOf(shifted));
						//System.out.println("recycled (" + n + "," + shifted + ")");
					} else {
						//System.out.println("skipped (" + n + "," + shifted + ")");
					}
				}
			}
			printCase(outFile, i, recycleCount);
		}
	}
	
	
	private static void printCase(PrintStream outStream, int i, int n) {
		outStream.println("Case #" + i +": " + n);
	}
	
	
	private static int numDigits(int n) {
		int count = 0;
		while(n != 0) {
			n = n / 10;
			count++;
		}
		return count;
	}
	
	
	private static int shiftNumPlaces(int n, int shiftAmount) {
		//String numStr = Integer.toString(n);
		String savedDigits = "";
		for(int i=0; i<shiftAmount; i++) {
			savedDigits = (n%10) + savedDigits;
			n = n / 10;
		}
		String shifted = savedDigits + n;
		return Integer.parseInt(shifted);
	}

}
