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 hk.polyu.cslhu.codejam.solution.impl.qualificationround;

import java.util.ArrayList;
import java.util.List;

import hk.polyu.cslhu.codejam.solution.Solution;

public class DancingWithTheGooglers extends Solution {
	private int N, S, p;
	private List<Integer> totalPointList;

	@Override
	public void setProblem(List<String> problemDesc) {
		// TODO Auto-generated method stub
		String[] splitArray = problemDesc.get(0).split(" ");
		
		this.N = Integer.valueOf(splitArray[0]);
		this.S = Integer.valueOf(splitArray[1]);
		this.p = Integer.valueOf(splitArray[2]);
		
		this.totalPointList = new ArrayList<Integer>();
		for (int i = 3; i < splitArray.length; i++) {
			this.totalPointList.add(Integer.valueOf(splitArray[i]));
		}
		
		if (this.totalPointList.size() != this.N)
			logger.error("Found an error for " + problemDesc.get(0));
	}

	@Override
	public void solve() {
		// TODO Auto-generated method stub
		int minNotSupSum = this.p * 3 - 2;
		int minSupSum = this.p > 1 ? (this.p * 3 - 4) : 1;
		
		int totalNotSup = 0;
		int totalSup = 0;
		
		for (Integer point : this.totalPointList) {
			if (point >= minNotSupSum)
				totalNotSup++;
			else if (point >= minSupSum)
				totalSup++;
		}
		
		if (totalSup + totalNotSup < this.S)
			logger.error("Found an error for suprising cases");
		
		this.result = String.valueOf(totalNotSup + Math.min(totalSup, this.S));
	}

}
