import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Recycled {
	public static void main(String[] args) throws Exception{
		String inputFile = "C-small-attempt0.in";
		
		BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(inputFile)));
		BufferedWriter output = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("output")));
		long num_cases = Long.parseLong(input.readLine());
		int current_case = 0;
		
		while (current_case < num_cases){
			current_case++;
			
			String[] fields = input.readLine().split(" ");
			int A = Integer.parseInt(fields[0]);
			int B = Integer.parseInt(fields[1]);
			int total = 0;
			
			for (int n = A; n < B; n++){
				for (int m = n+1; m <= B; m++){
					if (isRecycled(n,m)) total++;
				}
			}
			
			System.out.println("Case #" + current_case + ": " + total);
			output.write("Case #" + current_case + ": " + total + "\n");
		}
		output.close();
	}

	private static boolean isRecycled(int n, int m) {
		String sn = ""+n;
		String sm = ""+m;
		if (sn.length() != sm.length()) return false;
		int totaln = 0, totalm = 0;
		for (int i = 0; i < sn.length(); i++){
			totaln += sn.charAt(i);
			totalm += sm.charAt(i);
		}
		if (totaln != totalm) return false;
		for (int i = 0; i < sn.length()-1; i++){
			sm = sm.charAt(sm.length() - 1) + sm.substring(0, sm.length() - 1);
			if (sm.equals(sn)) return true;
		}
		return false;
	}
}

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

public class Recycled {
	public static int cases = 0;
	public static int min[] = new int[50];
	public static int max[] = new int[50];
	public static int answer[] = new int[50];
	public static ArrayList<Integer> results = new ArrayList<Integer>();

	public static void main(String args[]) {
		File input = new File("Input.txt");
		File output = new File("Output.txt");
		loadGame(input);
		for(int i = 0; i < cases; i++){
			answer[i] = 0;
		}
		findAnswer();
		saveGame(output);
	}
	
	public static void findAnswer(){
		for(int i = 0; i < cases; i++){
			for(int j = min[i]; j <= max[i]; j++){
				String number = new Integer(j).toString();
				ArrayList<String> numberArray = new ArrayList<String>();
				for(int m = 0; m < number.length(); m++){
					numberArray.add(Character.toString(number.charAt(m)));
				}
				for(int k = 1; k < number.length(); k++){
					numberArray.add(0, numberArray.remove((number.length()-1)));
					String temp = "";
					ArrayList<String> tempNumberArray = new ArrayList<String>();
					tempNumberArray.addAll(numberArray);
					for(int m = 0; m < number.length(); m++){
						temp += tempNumberArray.remove(0);
					}
					int result = Integer.parseInt(temp);
					if(result >= min[i] && result <= max [i] && result > j){
						if(!results.contains(result)){
						answer[i]++;
						results.add(result);
						}
					}
				}
				results.clear();
			}
		}
	}
	
	public static void loadGame(File input){
		Scanner in;
		try {
			in = new Scanner(input);
			cases = in.nextInt();
			in.nextLine();
			for(int i = 0; i < cases; i++){
				min[i] = in.nextInt();
				max[i] = in.nextInt();
				if(min[i] > max[i]){
					int temp = min[i];
					min[i] = max[i];
					max[i] = temp;
				}
				in.nextLine();
			}
			in.close();
		}
		catch (StringIndexOutOfBoundsException e) { }
		catch (FileNotFoundException e) { }
		catch (NoSuchElementException e) { } 
		catch (NullPointerException e) { }
	}

	public static void saveGame(File name){
		PrintWriter out;
		try {
			out = new PrintWriter(name);
			for(int i = 1; i <= cases; i++){
				out.println("Case #" + i + ": " + answer[(i-1)]);
			}  
			out.close();
		}
		catch (FileNotFoundException e) { }
		catch (NullPointerException e) { }
	}

}