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.*;

public class Main {

  public static void main(String args[]) {
    (new Main()).solve();
  }

  void solve() {

    Scanner cin = new Scanner(System.in);
    int T = cin.nextInt();

    for(int C=1; C<=T; ++C) {

      int A = cin.nextInt();
      int B = cin.nextInt();

      int n = ("" + A).length();
      int base = 1;
      for(int i=1; i<n; ++i) { base *= 10; }

      int count = 0;
      for(int i=A; i<=B; ++i) {
        count += solve(n, base, i, B);
      }

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

    }

  }

  int solve(int n, int base, int v, int max) {

    Set<Integer> set = new HashSet<Integer>();

    int min = v + 1;
    for(int i=0; i<n; ++i) {
      int next = (v / 10) + (v % 10) * base;
      v = next;
      if( min <= next && next <= max ) { set.add(v); }
    }

    return set.size();

  }

}
