import java.io.*;
import java.util.*;
import java.awt.Point;

class Case{
	int num0;
	long num1,num2;
	String result="";
	public Case(File aFile) {

		try{
			StringBuilder contents = new StringBuilder();
		  	BufferedReader input =  new BufferedReader(new FileReader(aFile));
			String line = input.readLine();
			num0 = Integer.valueOf(line).intValue();
			int i=1;
			while (i<=num0 && ( line = input.readLine()) != null){
				StringTokenizer st = new StringTokenizer(line," ");
				num1=Long.valueOf(st.nextToken()).longValue();
				num2=Long.valueOf(st.nextToken()).longValue();

				oneCase(i,num1,num2);
			  	i++;
			}

		}
		catch (IOException ex){
		  ex.printStackTrace();
		}
	}

  public String getResult (){

	return result;

  }


  public void oneCase (int c,long n1,long n2){
	String re="";

//*** output
	System.out.println("case="+c+": "+n1+":"+n2);
//***

	int y=0;
	for (long i=n1; i<=n2; i++){
		y+=checkRecycle(n1,n2,i);
	}

	re=y+"";

	result+="Case #"+c+": "+re+System.getProperty("line.separator");
  }


	public int checkRecycle (long n1, long n2, long num){
		String numSt=Long.valueOf(num).toString();
		if (numSt.length()<2)	return 0;
		int re=0;
		Vector allNum=new Vector();
		for (int i=1; i<numSt.length(); i++){
			String newNumSt=numSt.substring(i)+numSt.substring(0,i);
			if (!newNumSt.substring(0,1).equals("0")){
				if (Long.valueOf(newNumSt).longValue()>num){
					if (Long.valueOf(newNumSt).longValue()>n1 && Long.valueOf(newNumSt).longValue()<=n2){
						boolean found=false;
						for (int j=0;!found&&j<allNum.size();j++){
							if (newNumSt.equals((String)(allNum.elementAt(j))))
								found=true;
						}
						if (!found){
							allNum.addElement(newNumSt);
							re++;
						}
					}
				}
			}
		}
		//if (re>0)System.out.println("checkRecycle "+numSt+" re="+re+" allNum="+allNum);
		return re;
	}








}















public class ReadWriteTextFile {
  static public String getContents(File aFile) {
    StringBuilder contents = new StringBuilder();
    try {
      BufferedReader input =  new BufferedReader(new FileReader(aFile));
      try {
        String line = null;
        while (( line = input.readLine()) != null){
          contents.append(line);
          contents.append(System.getProperty("line.separator"));
        }
      }
      finally {
        input.close();
      }
    }
    catch (IOException ex){
      ex.printStackTrace();
    }
    return contents.toString();
  }
  static public void setContents(File aFile, String aContents)
                                 throws FileNotFoundException, IOException {
    if (aFile == null) {
      throw new IllegalArgumentException("File should not be null.");
    }
    if (!aFile.exists()) {
      throw new FileNotFoundException ("File does not exist: " + aFile);
    }
    if (!aFile.isFile()) {
      throw new IllegalArgumentException("Should not be a directory: " + aFile);
    }
    if (!aFile.canWrite()) {
      throw new IllegalArgumentException("File cannot be written: " + aFile);
    }
    Writer output = new BufferedWriter(new FileWriter(aFile));
    try {
      output.write( aContents );
    }
    finally {
      output.close();
    }
  }
  public static void main (String... aArguments) throws IOException {
    File testFile = new File("source.txt");
    File testFile2 = new File("result.txt");
	Case allcases = new Case(testFile);
    setContents(testFile2, allcases.getResult());
  }
}




















import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

public class GCJ3 {

	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		GCJ3 g = new GCJ3();

		// System.out.println();
		// long i1 = g.calculate(1, 9);
		// System.out.println();
//		 long i2 = g.calculate(10, 40);
		// System.out.println();
//		long i3 = g.calculate(100, 500);
//		long i4 = g.calculate(1111, 2222);
		
//		long i5 = g.calculate(28, 93);
		 
		// System.out.println(i1);
//		 System.out.println(i2);
//		 System.out.println(i3);
//		 System.out.println(i4);
//		System.out.println(i5);

		try {
			// Open the file that is the first
			// command line parameter
			FileInputStream fstream = new FileInputStream(
					"C:/PROG/java/work/tc/src/gcj3.txt");
			// Get the object of DataInputStream
			DataInputStream in = new DataInputStream(fstream);
			BufferedReader br = new BufferedReader(new InputStreamReader(in));
			String strLine;
			// Read File Line By Line
			int lineNum = 1;
			br.readLine();

			while ((strLine = br.readLine()) != null) {
				// Print the content on the console

//				 System.out.print(strLine+"\t");
				String[] val = strLine.split("\\s");
				System.out.print("Case #" + lineNum + ": ");
				System.out.println(g.calculate(Integer.valueOf(val[0]),
						Integer.valueOf(val[1])));
				
				
				
				
				// System.out.println();

				// System.out.println(strLine.charAt(0));
				lineNum++;
			}
			// Close the input stream
			in.close();
		} catch (Exception e) {// Catch exception if any
			e.printStackTrace();
		}

	}

	public long calculate(int A, int B) {
		
		HashMap<String,HashSet<String>> map = new HashMap<String,HashSet<String>>();

		String a = String.valueOf(A);
		String b = String.valueOf(B);
		if (a.length() == b.length() && a.length() > 1) {
			long count = 0;

			for (long i = A; i <= B; i++) {

				for (long l = 1; l < a.length(); l++) {
					long n = 0;
					long m = i;

					String nS = String.valueOf(m);

					String nS2 = nS.substring((int) l, a.length())
							+ nS.substring(0, (int) l);

					n = Long.valueOf(nS2);

					String nS3 = String.valueOf(n);

					if (n < m && nS3.length() == a.length() && A<=n && m<=B) {
//						System.out.println(n + " " + m);
						count++;
						if (map.get(nS3) == null){
							HashSet<String> s = new HashSet<String>();
							s.add(nS);
							map.put(nS3, s);
						}else {
							map.get(nS3).add(nS);
						}
					}
				}
			}
			
			long count2 = 0;
			for (String s : map.keySet()){
				
				for (Object o: map.get(s).toArray()){
					count2++;
				}
				
			}

			return count2;
		}

		return 0;
	}

}
