import sys
def is_palindrome(n):
s = str(n)
return s == s[::-1]
palindrome_list = range(1, 10)
fs_list = []
for n in range(2, 14/2 + 1):
half_n = n / 2;
is_even_len = (n == half_n + half_n)
start = 10 ** (half_n - 1);
end = 10 ** half_n;
val = start;
while val < end:
val_s = str(val)
val_s_rev = val_s[::-1]
if is_even_len:
palindrome = int(val_s + val_s_rev)
palindrome_list.append(palindrome)
else:
for i in range(0, 10):
palindrome = int(val_s + str(i) + val_s_rev)
palindrome_list.append(palindrome)
for i in range(len(palindrome_list)):
palindrome_sqr = palindrome_list[i] ** 2
if is_palindrome(palindrome_sqr):
fs_list.append(palindrome_sqr)
palindrome_list = []
val += 1
case_cnt = int(sys.stdin.readline());
for t in range(1, case_cnt + 1):
line = sys.stdin.readline();
start, end = map(int, line.split(' '));
fs_cnt = len([n for n in fs_list if n >= start and n <= end])
print "Case #%d: %d" % (t, fs_cnt)
aW1wb3J0IHN5cwoKZGVmIGlzX3BhbGluZHJvbWUobik6CiAgICBzID0gc3RyKG4pCglyZXR1cm4gcyA9PSBzWzo6LTFdCgpwYWxpbmRyb21lX2xpc3QgPSByYW5nZSgxLCAxMCkKZnNfbGlzdCA9IFtdCgpmb3IgbiBpbiByYW5nZSgyLCAxNC8yICsgMSk6CgloYWxmX24gPSBuIC8gMjsKCWlzX2V2ZW5fbGVuID0gKG4gPT0gaGFsZl9uICsgaGFsZl9uKQoJc3RhcnQgPSAxMCAqKiAoaGFsZl9uIC0gMSk7CgllbmQgPSAxMCAqKiBoYWxmX247Cgl2YWwgPSBzdGFydDsKCgl3aGlsZSB2YWwgPCBlbmQ6CgkJdmFsX3MgPSBzdHIodmFsKQoJCXZhbF9zX3JldiA9IHZhbF9zWzo6LTFdCgoJCWlmIGlzX2V2ZW5fbGVuOgoJCQlwYWxpbmRyb21lID0gaW50KHZhbF9zICsgdmFsX3NfcmV2KQoJCQlwYWxpbmRyb21lX2xpc3QuYXBwZW5kKHBhbGluZHJvbWUpCgkJZWxzZToKCQkJZm9yIGkgaW4gcmFuZ2UoMCwgMTApOgoJCQkJcGFsaW5kcm9tZSA9IGludCh2YWxfcyArIHN0cihpKSArIHZhbF9zX3JldikKCQkJCXBhbGluZHJvbWVfbGlzdC5hcHBlbmQocGFsaW5kcm9tZSkKCQkKCQlmb3IgaSBpbiByYW5nZShsZW4ocGFsaW5kcm9tZV9saXN0KSk6CgkJCXBhbGluZHJvbWVfc3FyID0gcGFsaW5kcm9tZV9saXN0W2ldICoqIDIKCQkJCgkJCWlmIGlzX3BhbGluZHJvbWUocGFsaW5kcm9tZV9zcXIpOgoJCQkJZnNfbGlzdC5hcHBlbmQocGFsaW5kcm9tZV9zcXIpCgkJCgkJcGFsaW5kcm9tZV9saXN0ID0gW10KCQl2YWwgKz0gMQoKY2FzZV9jbnQgPSBpbnQoc3lzLnN0ZGluLnJlYWRsaW5lKCkpOwoKZm9yIHQgaW4gcmFuZ2UoMSwgY2FzZV9jbnQgKyAxKToKCWxpbmUgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKTsKCXN0YXJ0LCBlbmQgPSBtYXAoaW50LCBsaW5lLnNwbGl0KCcgJykpOwoJZnNfY250ID0gbGVuKFtuIGZvciBuIGluIGZzX2xpc3QgaWYgbiA+PSBzdGFydCBhbmQgbiA8PSBlbmRdKQoJcHJpbnQgIkNhc2UgIyVkOiAlZCIgJSAodCwgZnNfY250KQoJ