1 #include <iostream>
2 #include <algorithm>
3 #include <cstring>
4 #include <cstdio>
5 #include <string>
6 #include <map>
7 #include <cmath>
8 #include <vector>
9
10 #define Faster ios::sync_with_stdio(false),cin.tie(0)
11 #define Read freopen("in.txt","r",stdin),freopen("out.txt","w",stdout)
12 #define Close fclose(stdin),fclose(stdout)
13 const int maxn = 1e4 + 5;
14 using namespace std;
15 const int MOD = 1e9+7;
16 typedef long long ll;
17
18 ll dp[20][20][2000];
19 int a[20];
20
21 ll dfs(int pos, int cut, int sum, bool limit){
22 if (pos == -1) return sum?0:1; //sum为0的时候说明是平衡的
23 if (sum < 0) return 0; //sum < 0 就肯定不平衡了返回0
24 if(!limit && dp[pos][cut][sum] != -1)
25 return dp[pos][cut][sum];
26 int up = limit?a[pos]:9;
27 ll ans = 0;
28 for(int i = 0; i <= up;i++){
29 ans += dfs(pos-1, cut, sum + (pos-cut)*i, limit && a[pos] == i);
30 }
31 if(!limit)
32 dp[pos][cut][sum] = ans;
33 return ans;
34 }
35
36 ll solve(ll x){
37 int pos = 0;
38 while(x){
39 a[pos++] = x%10;
40 x /= 10;
41 }
42 ll ans = 0;
43 for(int i = 0;i < pos;i++){
44 ans += dfs(pos-1, i, 0, true);
45 }
46 return ans - pos + 1;
47 //因为0多加了(pos - 1)次
48 }
49
50 int main(){
51 Faster;
52 int t;
53 cin >> t;
54 memset(dp, -1, sizeof(dp));
55 while(t--){
56 ll l, r;
57 cin >> l >> r;
58 ll ans = solve(r) - solve(l-1);
59 cout << ans << endl;
60 }
61 return 0;
62 }