package Main;

import com.sun.deploy.util.ArrayUtil;
import org.apache.commons.lang3.ArrayUtils;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;

/**
 * Created with IntelliJ IDEA.
 * User: arran
 * Date: 14/04/12
 * Time: 3:12 PM
 * To change this template use File | Settings | File Templates.
 */
public class Round {
    public StringBuilder parse(BufferedReader in) throws IOException {
        StringBuilder out = new StringBuilder();
        String lineCount = in.readLine();

        for (int i = 1; i <= Integer.parseInt(lineCount); i++)
        {
            out.append("Case #"+i+": ");
            System.err.println("Case #"+i+": ");
            String line = in.readLine();
            String[] splits = line.split(" ");
            int p1 = Integer.valueOf(splits[0]);
            int p2 = Integer.valueOf(splits[1]);
            int r = pairRecyclable(p1, p2);
            out.append(r);

//            if (i < Integer.parseInt(lineCount))
                out.append("\n");
        }
        return out;
    }

    public static int pairRecyclable(int i1, int i2) {
        HashSet<String> hash = new HashSet<String>();
        for (int i = i1; i < i2; i++)
        {
            String istr = String.valueOf(i);
            if (istr.length() < 2) continue;
            for (int p = 0; p < istr.length() ; p++)
            {
                String nistr = istr.substring(p,istr.length()).concat(istr.substring(0,p));
                if (Integer.valueOf(nistr) < i1) continue;
                if (Integer.valueOf(nistr) > i2) continue;
                if (nistr.equals(istr)) continue;
                String cnistr = (Integer.valueOf(nistr) > Integer.valueOf(istr)) ?  istr + "," + nistr : nistr + "," + istr;
                hash.add(cnistr);
            }
        }
        return hash.size();
    }

    public static void main(String[] args) {
        InputStreamReader converter = null;
        try {
            int attempt = 0;
            String quest = "C";
//            String size = "small-attempt";
            String size = "large";
            converter = new InputStreamReader(new FileInputStream("src/resource/"+quest+"-"+size+".in"));
            BufferedReader in = new BufferedReader(converter);
            Round r = new Round();
            String str = r.parse(in).toString();
            System.out.print(str);
            FileOutputStream fos = new FileOutputStream(quest+"-"+size+".out");
            OutputStreamWriter osw = new OutputStreamWriter(fos);
            BufferedWriter bw = new BufferedWriter(osw);
            bw.write(str);
            bw.flush();
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;

public class RecycledNumbers {

	private static final boolean DEBUG = false;

	public static void main( final String[] args ) throws Exception {
		final BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
		final int t = Integer.parseInt( br.readLine() );
		for ( int ii = 0; ii < t; ++ii ) {
			final String parts[] = br.readLine().split( " " );
			final int from = Integer.parseInt( parts[ 0 ] );
			final int to = Integer.parseInt( parts[ 1 ] );
			System.out.println( solve( ii + 1, from, to ) );
			if ( DEBUG ) System.out.println( "=== === === === ===" );
		}
	}

	private static String solve( final int idx, final int from, final int to ) {
		final HashSet<Long> set = new HashSet<Long>();
		for ( int i = from; i <= to; ++i ) {
			add( set, i, from, to );
		}
		return String.format( "Case #%d: %d", idx, set.size() );
	}

	private static void add( final HashSet<Long> set, final long n, final int from, final int to ) {
		final String ns = Long.toString( n );
		for ( int i = 1; i < ns.length(); ++i ) {
			final String f = ns.substring( 0, i );
			final String t = ns.substring( i );
			final long pair = getN( t, f );
			final long min = Math.min( n, pair );
			final long max = Math.max( n, pair );
			if ( from <= pair && pair <= to && pair != n )
				set.add( min * 3000000 + max );
		}
	}

	private static long getN( final String s1, final String s2 ) {
		long res = 0;
		for ( int i = 0; i < s1.length(); ++i ) {
			res += s1.charAt( i ) - '0';
			res *= 10;
		}
		for ( int i = 0; i < s2.length(); ++i ) {
			res += s2.charAt( i ) - '0';
			res *= 10;
		}
		if ( DEBUG ) System.out.printf( "DEBUG: s1='%s', s2='%s', res=%d\n", s1, s2, res / 10 );
		return res / 10;
	}

	@org.junit.Test
	public void statement1() {
		org.junit.Assert.assertEquals( String.format( "Case #%d: %d", 1, 0 ), solve( 1, 1, 9 ) );
	}

	@org.junit.Test
	public void statement2() {
		org.junit.Assert.assertEquals( String.format( "Case #%d: %d", 2, 3 ), solve( 2, 10, 40 ) );
	}

	@org.junit.Test
	public void statement3() {
		org.junit.Assert.assertEquals( String.format( "Case #%d: %d", 3, 156 ), solve( 3, 100, 500 ) );
	}

	@org.junit.Test
	public void statement4() {
		org.junit.Assert.assertEquals( String.format( "Case #%d: %d", 4, 287 ), solve( 4, 1111, 2222 ) );
	}

	@org.junit.Test(timeout = 10000)
	public void my1() {
		org.junit.Assert.assertEquals( String.format( "Case #%d: %d", 5, 299997 ), solve( 5, 1000000, 2000000 ) );
	}

}
