package codejam;

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

public class RecycledNumbers {
	public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new FileReader("in.txt"));
		PrintWriter out = new PrintWriter(new File("out.txt"));
		
		int T = Integer.parseInt(in.readLine());
		for (int t = 1; t <= T; ++t) {
			String[] parts = in.readLine().split("[ ]+");
			int A = Integer.parseInt(parts[0]);
			int B = Integer.parseInt(parts[1]);
			
			int cnt = 0;
			for (int i = A; i < B; ++i) {
				String str = String.valueOf(i);
				int n = str.length();
				String res = "";
				Set<Integer> seen = new HashSet<Integer>();
				for (int j = n - 1; j > 0; --j) {
					res = str.substring(j) + str.substring(0, j);
					int k = Integer.parseInt(res);
					if (k > i && k <= B) {
						//System.out.println("(" + i + ", " + k + ")");
						if (!seen.contains(k)) {
							++cnt;
							seen.add(k);
						}
					}
				}
			}

			out.println("Case #" + t + ": " + cnt);
		}
		
		in.close();
		out.close();
		System.exit(0);
	}
}

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

public class RecycledNumbers {

private static ArrayList<String> A,B; 

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

File in = new File("C-small-attempt0.in");
File out = new File("out.txt");
RecycledNumbers.read(in);
RecycledNumbers.print(out);


}
 

public static void read (File file) throws FileNotFoundException {
 Scanner scanner = new Scanner (file);
 int cases = scanner.nextInt();
 A = new ArrayList<String>(cases);
 B = new ArrayList<String>(cases);
 while (scanner.hasNext()) {
    A.add(scanner.next());
    B.add(scanner.next());    
 }
}
 
public static void print (File file) throws FileNotFoundException {
 PrintStream fileStream = new PrintStream (file);
 for (int i = 0; i < A.size(); i++) {
    //fileStream.println(A.get(i) + " " + B.get(i));
    fileStream.println("Case #" + (i+1) +": " + test(A.get(i),B.get(i)));
 }
fileStream.close();
}

public static int test(String A, String B) {

int returnThis = 0;

if (A.length() == 1) {
   return 0;
}

   int limit = Integer.valueOf(B); 
   int start = Integer.valueOf(A);
   for (int i = start; i <= limit; i++) {
      String base = Integer.toString(i);
      int count = 1;
      String m = "" + base.charAt(base.length() - count); 
      while (true) {                  
         String out = m + base.substring(0, base.length() - count);
         //System.out.println(base+": " + out);
         if (verify(base, out, limit)) {
           // System.out.println("A: "+A +" B: " + B + " base: " + base +" out: " + out);
            returnThis++;
         }
         count++;
         if (base.length() <= count) break;
         if (base.equals(out)) break;
         m = base.charAt(base.length() - count) + m;  
      }     
   }
//System.out.println(returnThis);
return returnThis;
}

public static boolean verify(String n, String m, int limit) {
   if (m.charAt(0) == '0') return false;
   if (Integer.valueOf(n) < Integer.valueOf(m) && Integer.valueOf(m) <= limit) {
      return true;
   }
return false;
}

}
