import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class CopyOfCopyOfMain {

	static int ndigits(int n) {
		return (int) (Math.log10(n) + 1);
	}

	static int rot(int n, int dig) {
		return (int) ((n % 10) * Math.pow(10, dig - 1)) + (int) (n / 10);
	}

	public static void main(String[] args) throws FileNotFoundException {
		String file = "C-large";
		Scanner in = new Scanner(new File(file + ".in"));
		PrintWriter out = new PrintWriter(new File(file + ".out"));

		int T = in.nextInt();
		for (int t = 1; t <= T; t++) {
			int A = in.nextInt();
			int B = in.nextInt();

			int c = 0;
			int[] list = new int[ndigits(B)];
			numbers: for (int i = A; i <= B; i++) {
				int digs = ndigits(i);
				int rot = i;
				int pairs = 0;

				Arrays.fill(list, -1);
				list[0] = i;

				digits: for (int j = 1; j <= digs + 1; j++) {

					rot = rot(rot, digs);
					if(rot < i)
						continue;

					if (A <= rot && rot <= B) {
						for (int k = 0; k < j; k++) {
							if (list[k] == rot) {
								continue digits;
							}
						}
						pairs++;
						list[j] = rot;
					}
				}

				//c += pairs * (pairs + 1) / 2;
				c += pairs ;
				// c+=digs;
			}
			out.println("Case #" + t + ": " + c);
		}

		in.close();
		out.close();
	}
}

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;


public class RecycledNumbers {
  public RecycledNumbers() { }

  public int solve(String str) {
    String[] tokens = str.split(" ");
    int length = tokens[0].length();
    int a = Integer.valueOf(tokens[0]);
    int b = Integer.valueOf(tokens[1]);
    return solve(a, b, length);
  }
  public int solve(int a, int b, int length) {
    Set<String> rPairs = new HashSet<String>();
    StringBuffer strBuffer = new StringBuffer();
    for (int n = a; n < b; ++n) {
      int shiftNum = n;
      for (int i = 0; i < length; ++i) {
        shiftNum = calcShiftNum(shiftNum, length);

        if (shiftNum <= b && shiftNum > n) {
          strBuffer.setLength(0);
          strBuffer.append("(").append(n).append(", ").append(shiftNum).append(")");
          String result = strBuffer.toString();
          rPairs.add(result);
        }
      }
    }
    return rPairs.size();
  }

  public int calcShiftNum(int num, int length) {
    int maxUnit = Double.valueOf(Math.pow(10, length - 1)).intValue();
    int remainder = num % 10;
    return (remainder * maxUnit) + (num / 10);
  }

  public static void main(String[] args) throws IOException {
    RecycledNumbers solver = new RecycledNumbers();
    //System.out.println(solver.solve("100 500"));
    File folder = new File(".");
    for (File f : folder.listFiles()) {
      if (!f.getName().endsWith("in") || !f.isFile()) {
        continue;
      }
      System.out.println(f.getName());
      String outFileName = f.getName().replace("in", "out");

      BufferedReader reader = new BufferedReader(new FileReader(f));
      String str;
      int lineNum = 0, caseNum = 1;
      BufferedWriter writer = new BufferedWriter(new FileWriter(outFileName));
      lineNum = Integer.valueOf(reader.readLine());
      while ((str = reader.readLine()) != null) {
        str = str.trim();
        writer.write(String.format("Case #%d: %d\n", caseNum++, solver.solve(str)));
      }
      if (lineNum != caseNum - 1) {
        System.err.println("Case Number is not matched to input file.");
      }
      writer.flush();
      writer.close();
    }

  }

}
