import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;

public class ReadFile {
	public static void main(String[] args) throws Exception {
		String srcFile = "C:" + File.separator + "Documents and Settings"
				+ File.separator + "rohit" + File.separator + "My Documents"
				+ File.separator + "Downloads" + File.separator
				+ "C-small-attempt1.in.txt";
		String destFile = "C:" + File.separator + "Documents and Settings"
				+ File.separator + "rohit" + File.separator + "My Documents"
				+ File.separator + "Downloads" + File.separator
				+ "C-small-attempt0.out";
		File file = new File(srcFile);
		List<String> readData = new ArrayList<String>();
		FileReader fileInputStream = new FileReader(file);
		BufferedReader bufferedReader = new BufferedReader(fileInputStream);
		StringBuilder stringBuilder = new StringBuilder();
		String line = null;
		while ((line = bufferedReader.readLine()) != null) {
			readData.add(line);
		}
		stringBuilder.append(generateOutput(readData));
		File writeFile = new File(destFile);
		if (!writeFile.exists()) {
			writeFile.createNewFile();
		}
		FileWriter fileWriter = new FileWriter(writeFile);
		BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
		bufferedWriter.write(stringBuilder.toString());
		bufferedWriter.close();
		System.out.println("output" + stringBuilder);
	}

	/**
	 * @param number
	 * @return
	 */
	private static String generateOutput(List<String> number) {
		StringBuilder stringBuilder = new StringBuilder();
		for (int i = 0; i < number.size(); i++) {
			if (i == 0) {
				continue;
			} else {
				String tempString = number.get(i);
				String[] temArr = tempString.split(" ");
				stringBuilder.append("Case #" + i + ": ");
				stringBuilder.append(getRecNumbers(temArr[0], temArr[1]));
				stringBuilder.append("\n");
			}
		}
		if (stringBuilder.length() > 0) {
			stringBuilder.deleteCharAt(stringBuilder.length() - 1);
		}
		return stringBuilder.toString();
	}

	// /* This method accepts method for google code jam */
	// private static String method(String value) {
	// int intValue = Integer.valueOf(value);
	// double givenExpr = 3 + Math.sqrt(5);
	// double num = Math.pow(givenExpr, intValue);
	// String valArr[] = (num + "").split("\\.");
	// int finalVal = Integer.valueOf(valArr[0]) % 1000;
	//
	// return String.format("%1$03d", finalVal);
	//
	// }
	//
	// /* This method accepts method for google code jam */
	// private static String method2(String value) {
	// StringTokenizer st = new StringTokenizer(value, " ");
	// String test[] = value.split(" ");
	// StringBuffer str = new StringBuffer();
	//
	// for (int i = 0; i < test.length; i++) {
	// // test[i]=test[test.length-i-1];
	// str.append(test[test.length - i - 1]);
	// str.append(" ");
	// }
	// str.deleteCharAt(str.length() - 1);
	// String strReversedLine = "";
	//
	// while (st.hasMoreTokens()) {
	// strReversedLine = st.nextToken() + " " + strReversedLine;
	// }
	//
	// return str.toString();
	// }

	private static int getRecNumbers(String no1, String no2) {

		int a = Integer.valueOf(no1);
		int b = Integer.valueOf(no2);
		Set<String> dupC = new HashSet<String>();
		for (int i = a; i <= b; i++) {
			int n = i;
			List<String> value = findPerm(n);
			for (String val : value) {
				if (Integer.valueOf(val) <= b && Integer.valueOf(val) >= a
						&& n < Integer.valueOf(val)) {
					dupC.add(n + "-" + val);
				}
			}
		}
		return dupC.size();
	}

	private static List<String> findPerm(int num) {
		String numString = String.valueOf(num);
		List<String> value = new ArrayList<String>();
		for (int i = 0; i < numString.length(); i++) {
			String temp = charIns(numString, i);
			if (!temp.equalsIgnoreCase(numString)) {
				value.add(charIns(numString, i));
			}
		}
		return value;

	}

	public static String charIns(String str, int j) {
		String begin = str.substring(0, j);
		String end = str.substring(j);
		return end + begin;
	}
}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.Scanner;
import java.lang.String;


public class D
{

    public static void solve() throws Exception
    {
        int I,c=0;
        int l=0;
        String y="";
        String cmp ="";
        String min="",max="";
        int imin=0,imax=0;
        PrintWriter out =new PrintWriter(new File("D.out"));
        BufferedReader br=new BufferedReader(new FileReader(new File("D.in")));
        int testCase=Integer.parseInt(br.readLine());
        for (int i = 1; i <= testCase; i++)
        {
            y="";
            String x= br.readLine();
//          String a="";
        int k = x.length();
       // char[] a = new char[I];
//       out.println("In case #"+ i +": "+k);
min = "";
max = "";
imin=0;
imax=0;
c=0;
           l=0;
            for (int j = 0; j < k; j++)
            {
                l = j+1;
//                if (x.substring(j,l)==" ")
//                    y = y+" ";
                 cmp = x.substring(j,l);
//out.println("Case #"+ i +": "+x.substring(j,l));         
                if (cmp.equals(" "))
                    c=1;
                    
                if (checkIfNumber(cmp))    
                {
                if (c==0)    
                    min = min + x.substring(j,l);
                else 
                    max = max + x.substring(j,l);
                }
            }
//            out.println("Case #"+ i +": "+min +" " + max);
            if (checkIfNumber(min))  
            {            
            imin = Integer.parseInt( min );
            }
            if (checkIfNumber(max))  
            {            
                imax = Integer.parseInt( max );
 
            }
          int n=0,m=0,ireord=0,tmp=0;
          int dig=0,d=0;
          String tmp1 = "";
          String reord = "0";
          int comb = 0;
            for ( n = imin; n <= imax; n++)
            {
                dig = min.length();
//                out.println("In case RUNNING#       "+ i +": "+n);
                
                if (dig>1)
                {
//                    reord = Integer.toString(n);                          
                        tmp1=Integer.toString(n);
                for (d =1;d<dig;d++)
                 {
                     
                     
//                     if (dig!=1)
                      reord = Rev(tmp1);
//                      out.println("In case # REORD"+ i +": "+ reord+ "tmp " + tmp);
                    tmp1=reord;
//                     if (checkIfNumber(reord))  
//                    {            
//                        tmp = Integer.parseInt( reord );
//                    }        


                      if (!chklead(reord))
                      {
//                       out.println("In case chklead#    "+ i +": "+reord);
                       continue;      
                      }
//                     else reord = m;
//                      out.println("In case #"+ i +": "+reord);

                     for (m=n+1;m<=imax;m++)
                     {
                       if (checkIfNumber(reord))
                         ireord=Integer.parseInt( reord );
                       if (ireord==m)  
                       {
                         comb=comb+1;
//                         out.println("Case # RIGHT"+ i +": Comb "+ comb + "Reord" + reord+ " REV " +n);
                        }
                    }
                 }       
                }
                else comb=0;
            }
//            out.println("Case #"+ i + comb);
                       out.println("Case #"+ i +": "+comb);

        }
        out.close();
    }
    public static boolean checkIfNumber(String in) {
        
        try {

            Integer.parseInt(in);
        
        } catch (NumberFormatException ex) {
            return false;
        }
        
        return true;
    }
    public static boolean chklead(String in) {
        int l=0,d=0;
        String cmp="";
        try {

//            for (d =0;d<in.length();d++)
//                 {   
                     l = 1;
//                     if (in.length()>0)
                     cmp = in.substring(d,l);
                     
                     if (cmp.equals("0"))
                      return false;
                     else
                      return true;
//                 }
//                 return true;
        
        } catch (NumberFormatException ex) {
            return false;
        }
        
    }
    public static String Rev (String n)
        {
            int r,t=0;
            String rev="";
//            while (n>0)
//            {
           if (checkIfNumber(n))  
            {            
                t = Integer.parseInt( n );
 
            }

                    r=t%10;
                    rev=rev+r;
                    t/=10;
                   if (n.length()>1) 
                    rev=rev+n.substring(0,n.length()-1);
                   else
                    rev=rev+t;
                    
//                }
                return rev;
        }
        
    public static void main(String[] args) throws Exception
    {
        solve();
    }
    
}
