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

public class recycled_numbers {
	public static void main(String[]a) throws Exception{
		
		Scanner f = new Scanner(new File(a[0]));
		int result=0;
		int A,B;
		String n,m;
		HashSet<String> s=new HashSet<String>();
		
		int T=f.nextInt();	//T total case count
		for (int t=1; t<=T;t++){//for each case t
			
			s.clear();
			result=0;				//reset
			A=f.nextInt();B=f.nextInt();	//get values for next case
			
			if (A==B)result=0;//remove case not meeting problem limits 
			else{
				for(int i=A;i<=B;i++){//for each int in range
					n=Integer.toString(i);
					m=new String(n);
					//System.out.println(n);
					for (int j=1;j<n.length();j++){//move each digit to the front & test
						m = m.substring(m.length()-1)+m.substring(0,m.length()-1);
						if(m.matches("^0+[\\d]+")!=true &&
								Integer.parseInt(m)<=B &&
								Integer.parseInt(n)<Integer.parseInt(m)){
							s.add(new String(n+","+m));
							//result++;
							//System.out.println(" matched: "+m);
						}
						
					}
				}
				result = s.size();
			}

			//display output
			System.out.println("Case #" + t + ": " + result);
		}
	}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class ProblemC {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		List<Integer>[] l = genRecycled();
		
		int T = sc.nextInt();
		
		for(int i = 0; i < T; i++){
			int c = processCase(sc, l);
			
			System.out.println("Case #" + (i+1) + ": " + c);
		}
	}
	
	public static List<Integer>[] genRecycled(){
		// gen all the possible ms for a given n
		List<Integer>[] rec = new List[2000001];
		
		int cmp;
		
		// generate a load of blank lists
		for(int i = 0; i < rec.length; i++){
			// if(i % 10000 == 0) System.out.println("hi " + i);
			rec[i] = new ArrayList<Integer>();
			
			String n = Integer.toString(i);
			String m = rotate(n);
			
			// detect when back to the first
			while(!m.equals(n)){
				
				// no leading zeros
				if(m.charAt(0) != '0'){
					// find the numeric value
					cmp = Integer.parseInt(m);
					
					// number can't be greater than the max
					// and also has to be greater than n
					if(cmp < rec.length && cmp > i){
						// add it to the list of possibles
						rec[i].add(cmp);
					}
				}
				
				m = rotate(m);
			}
		}

		return rec;
	}
	
	public static String rotate(String s){
		return s.substring(1) + s.charAt(0);
	}
	
	public static int processCase(Scanner sc, List<Integer>[] l){
		int a = sc.nextInt();
		int b = sc.nextInt();
		int count = 0;
		
		// loop through the range
		for(int i = a; i < b; i++){
			List<Integer> li = l[i];
			
			// find the pre-calculated things
			for(Integer el : li){
				// if m is less than or equal to B, count it
				if(el <= b) count++;
			}
		}
		
		return count;
	}

}
