import pypyjit pypyjit.set_param("max_unroll_recursion=-1") import sys from collections import defaultdict input = sys.stdin.readline def main(): T = int(input()) for _ in range(T): L,R = input().split() L = str(int(L)-1) L_keta,R_keta = len(L), len(R) memo_f = defaultdict(int) def f(n, MAX, giri, R, R_keta): if(n == R_keta):return MAX if((n,MAX,giri) in memo_f):return memo_f[(n,MAX,giri)] ret = 0 if(giri): for i in range(int(R[n])+1): ret += f(n+1, max(MAX, i), int(R[n]) == i, R, R_keta) else: ret += f(n+1, MAX, False, R, R_keta) * (MAX+1) for i in range(MAX+1, 10): ret += f(n+1, max(MAX, i), False, R, R_keta) memo_f[(n,MAX,giri)] = ret return ret memo_g = defaultdict(int) def g(n, MAX, giri, L, L_keta): if(n == L_keta):return MAX if((n,MAX,giri) in memo_g):return memo_g[(n,MAX,giri)] ret = 0 if(giri): for i in range(int(L[n])+1): ret += g(n+1, max(MAX, i), int(L[n]) == i, L, L_keta) else: ret += g(n+1, MAX, False, L, L_keta) * (MAX+1) for i in range(MAX+1, 10): ret += g(n+1, max(MAX, i), False, L, L_keta) memo_g[(n,MAX,giri)] = ret return ret print(f(0,0,True,R,R_keta) - g(0,0,True,L,L_keta)) main()