package jp.funnything.competition.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;

import org.apache.commons.io.IOUtils;

public class QuestionReader {
    private final BufferedReader _reader;

    public QuestionReader( final File input ) {
        try {
            _reader = new BufferedReader( new FileReader( input ) );
        } catch ( final FileNotFoundException e ) {
            throw new RuntimeException( e );
        }
    }

    public void close() {
        IOUtils.closeQuietly( _reader );
    }

    public String read() {
        try {
            return _reader.readLine();
        } catch ( final IOException e ) {
            throw new RuntimeException( e );
        }
    }

    public BigDecimal[] readBigDecimals() {
        return readBigDecimals( " " );
    }

    public BigDecimal[] readBigDecimals( final String separator ) {
        final String[] tokens = readTokens( separator );

        final BigDecimal[] values = new BigDecimal[ tokens.length ];
        for ( int index = 0 ; index < tokens.length ; index++ ) {
            values[ index ] = new BigDecimal( tokens[ index ] );
        }

        return values;
    }

    public BigInteger[] readBigInts() {
        return readBigInts( " " );
    }

    public BigInteger[] readBigInts( final String separator ) {
        final String[] tokens = readTokens( separator );

        final BigInteger[] values = new BigInteger[ tokens.length ];
        for ( int index = 0 ; index < tokens.length ; index++ ) {
            values[ index ] = new BigInteger( tokens[ index ] );
        }

        return values;
    }

    public int readInt() {
        final int[] values = readInts();

        if ( values.length != 1 ) {
            throw new IllegalStateException( "Try to read single interger, but the line contains zero or multiple values" );
        }

        return values[ 0 ];
    }

    public int[] readInts() {
        return readInts( " " );
    }

    public int[] readInts( final String separator ) {
        final String[] tokens = readTokens( separator );

        final int[] values = new int[ tokens.length ];
        for ( int index = 0 ; index < tokens.length ; index++ ) {
            values[ index ] = Integer.parseInt( tokens[ index ] );
        }

        return values;
    }

    public long readLong() {
        final long[] values = readLongs();

        if ( values.length != 1 ) {
            throw new IllegalStateException( "Try to read single interger, but the line contains zero or multiple values" );
        }

        return values[ 0 ];
    }

    public long[] readLongs() {
        return readLongs( " " );
    }

    public long[] readLongs( final String separator ) {
        final String[] tokens = readTokens( separator );

        final long[] values = new long[ tokens.length ];
        for ( int index = 0 ; index < tokens.length ; index++ ) {
            values[ index ] = Long.parseLong( tokens[ index ] );
        }

        return values;
    }

    public String[] readTokens() {
        return readTokens( " " );
    }

    public String[] readTokens( final String separator ) {
        return read().split( separator );
    }
}

/**
 *
 * @author Tag
 */

/*
 * 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.\
 * 
 * Sample
 * Input                Output
 * 4
 * 1 9                     Case #1: 0
 * 10 40                   Case #2: 3
 * 100 500                 Case #3: 156
 * 1111 2222               Case #4: 287
 */


import java.util.Scanner;

public class RecycledNumbers 
{
    public static void main(String args[])
    {
        Scanner input = new Scanner(System.in);
        
        int numTests = new Integer(input.nextLine());
        int recycledPairs;
        
        for(int i = 1; i <= numTests; i++)
        {
            String[] tokens = input.nextLine().split(" ");
            
            Integer smallerNum = new Integer(tokens[0]);
            Integer biggerNum = new Integer(tokens[1]);
            
            recycledPairs = calcRecycled(smallerNum, biggerNum);
            
            System.out.println("Case #" + i + ": " + recycledPairs);
        }
    }

    private static int calcRecycled(Integer smallerNum, Integer biggerNum) 
    {
        int recycledPairs = 0;
        
        while(smallerNum < biggerNum)
        {
            String toCheck = smallerNum.toString();
            
            Integer tmpBigger = new Integer(biggerNum);
            
            while(smallerNum < tmpBigger)
            {
                String biggerStr = tmpBigger.toString();
                
                for(int i = 1; i < biggerStr.length(); i++)
                {
                    if((biggerStr.substring(biggerStr.length() - i) + 
                        biggerStr.substring(0, biggerStr.length() - i)).equals(toCheck))
                    {
                        recycledPairs++;
                    }
                }
                
                tmpBigger--;
            }
            
            smallerNum++;
        }
        
        return recycledPairs;
    }
}
