/*
 * Problem C. Recycled Numbers
 * 
 * Do you ever become frustrated with television because you keep seeing the
 * same things, recycled over and over again? Well I personally don't care about
 * television, but I do sometimes feel that way about numbers.
 * 
 * Let's say a pair of distinct positive integers (n, m) is recycled if you can
 * obtain m by moving some digits from the back of n to the front without
 * changing their order. For example, (12345, 34512) is a recycled pair since
 * you can obtain 34512 by moving 345 from the end of 12345 to the front. Note
 * that n and m must have the same number of digits in order to be a recycled
 * pair. Neither n nor m can have leading zeros.
 * 
 * Given integers A and B with the same number of digits and no leading zeros,
 * how many distinct recycled pairs (n, m) are there with A â¤ n < m â¤ B?
 * 
 * Input
 * 
 * The first line of the input gives the number of test cases, T. T test cases
 * follow. Each test case consists of a single line containing the integers A
 * and B.
 * 
 * Output
 * 
 * For each test case, output one line containing "Case #x: y", where x is the
 * case number (starting from 1), and y is the number of recycled pairs (n, m)
 * with A â¤ n < m â¤ B.
 * 
 * Limits
 * 
 * 1 â¤ T â¤ 50.
 * 
 * A and B have the same number of digits.

Small dataset

1 â¤ A â¤ B â¤ 1000.

Large dataset

1 â¤ A â¤ B â¤ 2000000.

Sample


Input 
 	
Output 
 
4
1 9
10 40
100 500
1111 2222
Case #1: 0
Case #2: 3
Case #3: 156
Case #4: 287
 */

package google.codejam.y2012.qualifications;

import google.codejam.commons.Utils;

import java.io.IOException;
import java.util.StringTokenizer;

/**
 * @author Marco Lackovic <marco.lackovic@gmail.com>
 * @version 1.0, Apr 14, 2012
 */
public class RecycledNumbers {

	private static final String INPUT_FILE_NAME = "C-large.in";
	private static final String OUTPUT_FILE_NAME = "C-large.out";

	public static void main(String[] args) throws IOException {
		String[] input = Utils.readFromFile(INPUT_FILE_NAME);
		String[] output = new String[input.length];
		int x = 0;
		for (String line : input) {
			StringTokenizer st = new StringTokenizer(line);
			int a = Integer.valueOf(st.nextToken());
			int b = Integer.valueOf(st.nextToken());
			System.out.println("Computing case #" + (x + 1));
			output[x++] = "Case #" + x + ": " + recycledNumbers(a, b);
		}
		Utils.writeToFile(output, OUTPUT_FILE_NAME);
	}

	private static int recycledNumbers(int a, int b) {
		int count = 0;
		for (int n = a; n < b; n++) {
			count += getNumGreaterRotations(n, b);
		}
		return count;
	}

	private static int getNumGreaterRotations(int n, int b) {
		int count = 0;
		char[] chars = Integer.toString(n).toCharArray();
		for (int i = 0; i < chars.length; i++) {
			chars = rotateRight(chars);
			if (chars[0] != '0') {
				int m = Integer.valueOf(new String(chars));
				if (n == m) {
					break;
				} else if (n < m && m <= b) {
					count++;
				}
			}
		}
		return count;
	}

	private static char[] rotateRight(char[] chars) {
		char last = chars[chars.length - 1];
		for (int i = chars.length - 2; i >= 0; i--) {
			chars[i + 1] = chars[i];
		}
		chars[0] = last;
		return chars;
	}

}

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class Numbers {
	
	private static int [][] input;
	private static int [] output;
	
	public static void main(String [] args) throws NumberFormatException, IOException{
		
		readData();
		output = new int [input.length];
		
		for (int i=0 ; i< input.length ; i++){
			output[i] = numberOfPairs(input[i][0], input[i][1]);
		}
		
		writeData();
	}

	public static int numberOfPairs(int a, int b){
		int r=0;
		
		for (int i=a ; i<=b ; i++ )
		{
			
			String A = Integer.toString( i );
			int f = flip(A);
			int f2 = flip2(A);
			int f3 = flip3(A);
			int f4 = flip4(A);
			int f5 = flip5(A);
			int f6 = flip6(A);
			
			if ( i<f && a<=f && f<=b ){
				r++;
			
			}
			if (i>100){
				if ( i<f2 && a<=f2 && f2<=b && f2 !=f ){
					r++;
				
				}
			}
			
			if (i>1000){
				
				if ( i<f3 && a<=f3 && f3<=b && f2 !=f && f3 != f2 && f3 != f){
					r++;
			
						}			
				}	
			if (i>10000){
				
				if ( i<f4 && a<=f4 && f4<=b && f2 !=f && f3 != f2 && f3 != f && f4 !=f3 && f4!= f2 && f4 !=f )
					r++;
				}
			if (i>100000){
				
				if ( i<f5 && a<=f5 && f5<=b && f2 !=f && f3 != f2 && f3 != f && f4 !=f3 && f4!= f2 && f4 !=f
						&& f5 != f4 && f5 != f3 && f5!= f2 && f5 !=f)
					r++;
				}
			if (i>1000000){
				
				if ( i<f6 && a<=f6 && f6<=b && f2 !=f && f3 != f2 && f3 != f && f4 !=f3 && f4!= f2 && f4 !=f
						&& f5 != f4 && f5 != f3 && f5!= f2 && f5 !=f && f6 !=f5 && f6 != f4 && f6 != 3 && f6 != f2
						&& f6 !=f )
					r++;
				}
			
		}
		return r;
		
	}
	
	public static int flip(String A){
		
		if(A.length() < 2)
			return 0;
		String ans = A.substring( 1)+ A.substring( 0, 1 );
		return Integer.parseInt( ans );
	
	}
	public static int flip2(String A){
		if(A.length() <3 )
			return 0;
	
	String ans = A.substring( 2)+ A.substring( 0, 2 );
	return Integer.parseInt( ans );

	}
	
	public static int flip3(String A){
		if(A.length() < 4)
			return 0;
		
		String ans = A.substring( 3)+ A.substring( 0, 3 );
		return Integer.parseInt( ans );

		}
	public static int flip4(String A){
		if(A.length() < 5)
			return 0;
		String ans = A.substring( 4)+ A.substring( 0, 4 );
		return Integer.parseInt( ans );

		}
	public static int flip5(String A){
		if(A.length() <6 )
			return 0;
		
		String ans = A.substring( 5)+ A.substring( 0, 5 );
		return Integer.parseInt( ans );

		}
	public static int flip6(String A){
		if(A.length() < 7)
			return 0;
		
		String ans = A.substring( 6)+ A.substring( 0, 6 );
		return Integer.parseInt( ans );

		}
	
	public static void readData() throws NumberFormatException, IOException{
		FileReader fr = new FileReader("Input.txt");
		BufferedReader br = new BufferedReader(fr);
		int numberOfInputs = Integer.parseInt( br.readLine() );
		input = new int [numberOfInputs][2];
		for (int i = 0; i<numberOfInputs ; i++  ){
			String [] numbers = ((String)(br.readLine())).split( " " );   
			for (int j = 0 ; j<2 ;j++){
				input [i][j] =  Integer.parseInt(numbers [j]);
			}
		}
		br.close();
	}
	
	public static void writeData() throws IOException{
		FileWriter fw = new FileWriter("Output.txt");
		BufferedWriter bw = new BufferedWriter(fw);
		for (int i = 0; i< output.length ; i++ ){
			String out = "Case #" +(i+1) +": "+ output[i];
			bw.write( out );
			bw.newLine();
		}
		bw.close();
	}
}
