package fixjava;

public class StringUtils {

	/** Repeat the given string the requested number of times. */
	public static String repeat(String str, int numTimes) {
		StringBuilder buf = new StringBuilder(Math.max(0, str.length() * numTimes));
		for (int i = 0; i < numTimes; i++)
			buf.append(str);
		return buf.toString();
	}

	/**
	 * Pad the left hand side of a field with the given character. Always adds at least one pad character. If the length of str is
	 * greater than numPlaces-1, then the output string will be longer than numPlaces.
	 */
	public static String padLeft(String str, char padChar, int numPlaces) {
		int bufSize = Math.max(numPlaces, str.length() + 1);
		StringBuilder buf = new StringBuilder(Math.max(numPlaces, str.length() + 1));
		buf.append(padChar);
		for (int i = 1, mi = bufSize - str.length(); i < mi; i++)
			buf.append(padChar);
		buf.append(str);
		return buf.toString();
	}

	/**
	 * Pad the right hand side of a field with the given character. Always adds at least one pad character. If the length of str is
	 * greater than numPlaces-1, then the output string will be longer than numPlaces.
	 */
	public static String padRight(String str, char padChar, int numPlaces) {
		int bufSize = Math.max(numPlaces, str.length() + 1);
		StringBuilder buf = new StringBuilder(Math.max(numPlaces, str.length() + 1));
		buf.append(str);
		buf.append(padChar);
		while (buf.length() < bufSize)
			buf.append(padChar);
		return buf.toString();
	}

	/** Intern all strings in an array, skipping null elements. */
	public static String[] intern(String[] arr) {
		for (int i = 0; i < arr.length; i++)
			arr[i] = arr[i].intern();
		return arr;
	}

	/** Intern a string, ignoring null */
	public static String intern(String str) {
		return str == null ? null : str.intern();
	}

}

import java.io.IOException;
import java.io.PrintWriter;

public class RecycledNumbers {
	
	public static void main(String[] args) {
		RecycledNumbers bt = new RecycledNumbers();
		bt.solveProblem();
		
	}
	public void solveProblem() {
		String[] testCases = ReadFile.readFile("C:/Users/Pablo/Documents/codejam/RN.in");
		int i = 0;
		StringBuilder res = new StringBuilder();
		for (String testCase : testCases) {
			if(!res.toString().equals("")) {
				res.append("\n");
			}
			res.append(processTestCase(testCase, ++i));
		}
		System.out.print(res.toString());
		try {
			PrintWriter pw = new PrintWriter("C:/Users/Pablo/Documents/codejam/RN.out");
			pw.print(res.toString());
			pw.close();
		} catch (IOException e) {
			System.out.println("Error writing file!!");
		}
	}
	
	private String processTestCase(String testCase, int caseNum) {
		Long a = Long.valueOf(testCase.split(" ")[0]);
		Long b = Long.valueOf(testCase.split(" ")[1]);
		Long lim = Double.valueOf(Math.floor((a + b)/ 2d)).longValue() + 1L;
		
		int cantNumbers = 0;
		
		if(a.compareTo(10L) >= 0) {
			cantNumbers = verifNumbers(b, a, 0);
		} 
		
		return "Case #" + caseNum + ": " + cantNumbers;
	}
	
	private int verifNumbers(Long b, Long num, int cantNumbers) {

		for(; num.compareTo(b) < 0; num = num + 1L) {
			String n = num.toString();
			n = n.replaceAll(String.valueOf(n.charAt(0)), "");

			if(!n.equals("")) {
				for(int i = 1; i <= num.toString().length(); i++) {
					String s = num.toString().substring(num.toString().length() - i, num.toString().length()) + 
					num.toString().substring(0, num.toString().length() - i);

					Long tmp = Long.valueOf(s);

					if(tmp.compareTo(b) <= 0 && tmp.compareTo(num) > 0) {
						cantNumbers ++;
					}
				}
			}			
		}
		return cantNumbers;
	}	
}
