import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Recycled {
	public static void main(String[] args) throws Exception{
		String inputFile = "C-small-attempt0.in";
		
		BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(inputFile)));
		BufferedWriter output = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("output")));
		long num_cases = Long.parseLong(input.readLine());
		int current_case = 0;
		
		while (current_case < num_cases){
			current_case++;
			
			String[] fields = input.readLine().split(" ");
			int A = Integer.parseInt(fields[0]);
			int B = Integer.parseInt(fields[1]);
			int total = 0;
			
			for (int n = A; n < B; n++){
				for (int m = n+1; m <= B; m++){
					if (isRecycled(n,m)) total++;
				}
			}
			
			System.out.println("Case #" + current_case + ": " + total);
			output.write("Case #" + current_case + ": " + total + "\n");
		}
		output.close();
	}

	private static boolean isRecycled(int n, int m) {
		String sn = ""+n;
		String sm = ""+m;
		if (sn.length() != sm.length()) return false;
		int totaln = 0, totalm = 0;
		for (int i = 0; i < sn.length(); i++){
			totaln += sn.charAt(i);
			totalm += sm.charAt(i);
		}
		if (totaln != totalm) return false;
		for (int i = 0; i < sn.length()-1; i++){
			sm = sm.charAt(sm.length() - 1) + sm.substring(0, sm.length() - 1);
			if (sm.equals(sn)) return true;
		}
		return false;
	}
}

package com.example;

import java.io.IOException;
import java.util.List;

public class ProblemC {

    static int[] data = new int[2000001];

    public static void main(String[] a) throws IOException {
	
//	if(true) {
//	    precalc();
//
////	    System.out.println("min = "+ findMinimum(3210));
//	    
//	    return;
//	}
	
	List<String> lines = FileUtil.getLines("/C-small-attempt0.in");
	
	for(int i=1; i<data.length; i++) {
	    data[i] = findMinimum(i);
	}
	
	int cases = Integer.valueOf(lines.get(0));
	
	for(int i=0; i<cases; i++) {

	    String[] tokens = lines.get(i+1).split(" ");
	    
	    Integer start = Integer.valueOf(tokens[0]);
	    Integer stop = Integer.valueOf(tokens[1]);
	    
	    System.out.println("Case #"+ (i+1) +": "+ test(start, stop));
	}
    }
    
    static int test(int a, int b) {
	int found = 0;
	
	for(int n=a; n<b; n++) {
	    for(int m=n+1; m<=b; m++) {
		
		boolean equals = (data[n] == data[m]);
		
		if(equals) {
		    found++;
		}
	    }
	}
	
	return found;
    }
    
    static int findMinimum(int i) {
	int numDigits = (int) (1+Math.log10(i));
	
	int min = i;
	
	for(int r=0; r<numDigits-1; r++) {
	    int rotated = rotateInt(i, r);
	    int numDigitRotated = (int) (1+Math.log10(rotated));
	    
	    if(numDigits == numDigitRotated && rotated < min) {
		min = rotated;
	    }
	}

	return min;
    }
    
    static int rotateInt(int i, int r) {
	int tailPow = pow(10, 1+r);
	int tail = i % tailPow;
	
	return (i/tailPow) + tail * pow(10, (int) Math.log10(i) - r);
    }
    
    static int pow(int a, int b) {
	int r = 1;
	
	for(int i=0; i<b; i++) {
	    r *= a;
	}
	
	return r;
    }
}
