import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Scanner;
import java.util.TreeSet;

// Recycled Numbers
// https://code.google.com/codejam/contest/1460488/dashboard#s=p2

public class C {

	private static String process(Scanner in) {
		int A = in.nextInt();
		int B = in.nextInt();
		int res = 0;
		int len = Integer.toString(A).length();
		for(int n = A; n < B; n++) {
			String str = Integer.toString(n);
			TreeSet<Integer> set = new TreeSet<Integer>();
			for(int i = 1; i < len; i++) {
				int m = Integer.parseInt(str.substring(i, len) + str.substring(0, i));
				if ( m > n && m <= B && ! set.contains(m) ) {
					set.add(m);
					res++;
				}
			}
		}
		return Integer.toString(res);
	}

	public static void main(String[] args) throws Exception {
		Scanner in = new Scanner(System.in.available() > 0 ? System.in : 
			new FileInputStream(Thread.currentThread().getStackTrace()[1].getClassName() + ".practice.in"));
		int T = in.nextInt();
		for(int i = 1; i <= T; i++) 
			System.out.format("Case #%d: %s\n", i, process(in));
	}
}


import java.util.Scanner;


public class code13 {
    
    public static boolean recheck(int n, int m){
    int length= String.valueOf(m).length();
    boolean answer=false;
  
    for(int j=0;j<length;j++){  int r=(int)Math.pow(10,j);
    int e=(int) Math.pow(10,length-j); int p=n/r; int k=n%r;
    int x= k*e; int y= x+p;
    if(y==m){answer = true; break;}else{}}
    return answer;}
    
    public static int sol(int a, int b){
    int ans=0;
    for(int o=a;o<b;o++){
    for(int p=b;p>o;p--){
    if(recheck(o,p)){ans++;}else{}}}
    return ans;}
    public static void main(String[] args) {
       Scanner c = new Scanner(System.in);
     int times=c.nextInt();
     for(int p=0;p<times;p++){
     int s= sol(c.nextInt(),c.nextInt());
      System.out.println("Case #"+(p+1)+":  "+s);
     }
  }
}
