package fixjava;

public class StringUtils {

	/** Repeat the given string the requested number of times. */
	public static String repeat(String str, int numTimes) {
		StringBuilder buf = new StringBuilder(Math.max(0, str.length() * numTimes));
		for (int i = 0; i < numTimes; i++)
			buf.append(str);
		return buf.toString();
	}

	/**
	 * Pad the left hand side of a field with the given character. Always adds at least one pad character. If the length of str is
	 * greater than numPlaces-1, then the output string will be longer than numPlaces.
	 */
	public static String padLeft(String str, char padChar, int numPlaces) {
		int bufSize = Math.max(numPlaces, str.length() + 1);
		StringBuilder buf = new StringBuilder(Math.max(numPlaces, str.length() + 1));
		buf.append(padChar);
		for (int i = 1, mi = bufSize - str.length(); i < mi; i++)
			buf.append(padChar);
		buf.append(str);
		return buf.toString();
	}

	/**
	 * Pad the right hand side of a field with the given character. Always adds at least one pad character. If the length of str is
	 * greater than numPlaces-1, then the output string will be longer than numPlaces.
	 */
	public static String padRight(String str, char padChar, int numPlaces) {
		int bufSize = Math.max(numPlaces, str.length() + 1);
		StringBuilder buf = new StringBuilder(Math.max(numPlaces, str.length() + 1));
		buf.append(str);
		buf.append(padChar);
		while (buf.length() < bufSize)
			buf.append(padChar);
		return buf.toString();
	}

	/** Intern all strings in an array, skipping null elements. */
	public static String[] intern(String[] arr) {
		for (int i = 0; i < arr.length; i++)
			arr[i] = arr[i].intern();
		return arr;
	}

	/** Intern a string, ignoring null */
	public static String intern(String str) {
		return str == null ? null : str.intern();
	}

}

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;


	public class Main_c_new {
		public static void main(String[] args) throws Exception{
			BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
			int cases=Integer.parseInt(in.readLine());
			
			for(int i=1;i<=cases;i++)
			{
				int count = 0;
				String line = in.readLine();
				String parts[] = line.split(" ");
				int a = Integer.parseInt(parts[0]);
				int b = Integer.parseInt(parts[1]);
				int startlen = 0;
				int temp1 = a; 
				for(int k=0;k<8;k++){
					startlen++;
					temp1/=10;
					if(temp1<=0){
						break;
					}
				}
				//System.out.println("there");
				for(int j=a;j<b;j++){
					//int temp = j;
					int length = 0;
					if( j == (int)(Math.pow(10, startlen)) ){
						startlen++;
					}
					length = startlen;
					ArrayList<Integer> list = new ArrayList<Integer>();
					for(int k=1;k<length;k++){
						 Integer temp = j;
						 String val = Integer.toBinaryString(j);
						int div = (int)Math.pow(10,k);
						int part1 = j/div;
						int part2 = j%div;
						if(part2 >= (int)(Math.pow(10, k-1))){
							int num = (part2*((int)Math.pow(10, length-k)))+part1;
							if(num>j && num<=b){
								int flag = 0;
								for(int l=0; l<list.size();l++){
									if(list.get(l) == num){
										flag = 1;
									}
								}
								
								if(flag == 0){
								count++;
								list.add(num);
								}
							}
						}
					}
						
					}

				System.out.println("Case #"+i+": "+count);
			}
		}
	}
