import sys
def is_palindrome(n):
n_s = str(n)
return n_s == n_s[::-1]
fs_list = [1, 4, 9, 121, 484]
fs_sqrt_list = [[], [1, 2, 3], [11, 22]]
for n in range(3, 100 / 2 + 1):
fs_sqrt_list.append([])
half_n = n / 2
is_n_odd = (half_n + half_n != n)
if is_n_odd:
ref_index = n - 1
insert_s_list = ["0", "1", "2"]
else:
ref_index = n - 2
insert_s_list = ["00", "11"]
for val in fs_sqrt_list[ref_index]:
s = str(val)
half_s = s[:len(s) / 2]
half_s_rev = half_s[::-1]
if half_s[0] == '2':
insert_s_list.pop()
for insert_s in insert_s_list:
fs_sqrt_candidate = int(half_s + insert_s + half_s_rev)
fs_candidate = fs_sqrt_candidate ** 2
if is_palindrome(fs_candidate):
fs_list.append(fs_candidate)
fs_sqrt_list[n].append(fs_sqrt_candidate)
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)
aW1wb3J0IHN5cwoKZGVmIGlzX3BhbGluZHJvbWUobik6CiAgICBuX3MgPSBzdHIobikKCXJldHVybiBuX3MgPT0gbl9zWzo6LTFdCgpmc19saXN0ID0gWzEsIDQsIDksIDEyMSwgNDg0XQpmc19zcXJ0X2xpc3QgPSBbW10sIFsxLCAyLCAzXSwgWzExLCAyMl1dCgpmb3IgbiBpbiByYW5nZSgzLCAxMDAgLyAyICsgMSk6Cglmc19zcXJ0X2xpc3QuYXBwZW5kKFtdKQoJaGFsZl9uID0gbiAvIDIKCWlzX25fb2RkID0gKGhhbGZfbiArIGhhbGZfbiAhPSBuKQoJCglpZiBpc19uX29kZDoKCQlyZWZfaW5kZXggPSBuIC0gMQoJCWluc2VydF9zX2xpc3QgPSBbIjAiLCAiMSIsICIyIl0KCWVsc2U6CgkJcmVmX2luZGV4ID0gbiAtIDIKCQlpbnNlcnRfc19saXN0ID0gWyIwMCIsICIxMSJdCgkKCWZvciB2YWwgaW4gZnNfc3FydF9saXN0W3JlZl9pbmRleF06CgkJcyA9IHN0cih2YWwpCgkJaGFsZl9zID0gc1s6bGVuKHMpIC8gMl0KCQloYWxmX3NfcmV2ID0gaGFsZl9zWzo6LTFdCgkJCgkJaWYgaGFsZl9zWzBdID09ICcyJzoKCQkJaW5zZXJ0X3NfbGlzdC5wb3AoKQoJCQoJCWZvciBpbnNlcnRfcyBpbiBpbnNlcnRfc19saXN0OgoJCQlmc19zcXJ0X2NhbmRpZGF0ZSA9IGludChoYWxmX3MgKyBpbnNlcnRfcyArIGhhbGZfc19yZXYpCgkJCWZzX2NhbmRpZGF0ZSA9IGZzX3NxcnRfY2FuZGlkYXRlICoqIDIKCQkJCgkJCWlmIGlzX3BhbGluZHJvbWUoZnNfY2FuZGlkYXRlKToKCQkJCWZzX2xpc3QuYXBwZW5kKGZzX2NhbmRpZGF0ZSkKCQkJCWZzX3NxcnRfbGlzdFtuXS5hcHBlbmQoZnNfc3FydF9jYW5kaWRhdGUpCgpjYXNlX2NudCA9IGludChzeXMuc3RkaW4ucmVhZGxpbmUoKSk7Cgpmb3IgdCBpbiByYW5nZSgxLCBjYXNlX2NudCArIDEpOgoJbGluZSA9IHN5cy5zdGRpbi5yZWFkbGluZSgpOwoJc3RhcnQsIGVuZCA9IG1hcChpbnQsIGxpbmUuc3BsaXQoJyAnKSk7Cglmc19jbnQgPSBsZW4oW24gZm9yIG4gaW4gZnNfbGlzdCBpZiBuID49IHN0YXJ0IGFuZCBuIDw9IGVuZF0pCglwcmludCAiQ2FzZSAjJWQ6ICVkIiAlICh0LCBmc19jbnQpCgk=