import java.util.HashSet;
import java.util.Scanner;

public class C {

	static HashSet p = new HashSet();
	static int low;
	static int high;
	int count = 0;

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int no = sc.nextInt();

		for (int i = 1; i <= no; i++) {

			p.clear();
			low = sc.nextInt();
			high = sc.nextInt();

			for (int l = low; l <= high; l++) {
				recycle(l);
			}
			System.out.println("Case #" + i + ": " + p.size());

		}
	}

	public static void recycle(int no) {

		String s = Integer.toString(no);
		for (int i = 0; i < s.length(); i++) {
			String rec = s.substring(i) + s.substring(0, i);
			int r = Integer.parseInt(rec);
			if (r != no && r >= low && r <= high) {
				int min = Math.min(r, no);
				int max = Math.max(r, no);
				String a = Integer.toString(min) + "" + Integer.toString(max);
				p.add(a);

			}
		}

	}
}

import java.util.HashSet;
import java.util.Scanner;

public class problemC {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner cin = new Scanner(System.in);
		int t = cin.nextInt(), a, b, c, i, ten, len, q, j = 0, ans, ts, k = 0;
		while (t > 0) {
			t--;
			k++;
			ten = 1;
			len = 1;
			a = cin.nextInt();
			b = cin.nextInt();
			c = a;
			ans = 0;
			while (c > 9) {
				c /= 10;
				ten *= 10;
				len++;
			}
			HashSet<Integer> hash = new HashSet<Integer>();
			for (i = a; i <= b; i++) {
				if (!hash.contains(i)) {
					hash.add(i);
					ts = 1;
					j = i;
					for (q = 0; q < len; q++) {
						j = (j % ten) * 10 + j / ten;
						if (j >= a && j <= b && !hash.contains(j)) {
							ts++;
							hash.add(j);
						}
					}
					ans += ts * (ts - 1) / 2;
				}
			}
			System.out.println("Case #" + k + ": " + ans);
		}
	}
}
