#include <bits/stdc++.h>   using namespace std;   long long l, r, lim[60];   long long f[60][60][2][2];   inline long long read() {     long long x = 0, f = 1;     char ch = getchar();     while (!isdigit(ch)) {       if (ch ==  - ) f = -1;       ch = getchar();     }     while (isdigit(ch)) {       (x *= 10) += ch -  0 ;       ch = getchar();     }     return x * f;   }   long long dfs(long long at, long long sum, bool is_lim, bool is_pre) {     if (at == 0) return sum <= 3 && !is_pre;     if (f[at][sum][is_lim][is_pre] != -1) return f[at][sum][is_lim][is_pre];     long long mx = is_lim ? lim[at] : 9, res = 0;     for (long long i = 0; i <= mx; i++) {       if (i == 0 && is_pre)         res += dfs(at - 1, sum, is_lim && i == mx, is_pre);       else         res += dfs(at - 1, sum + (i != 0), is_lim && i == mx, 0);     }     return f[at][sum][is_lim][is_pre] = res;   }   long long solve(long long x) {     memset(f, -1, sizeof(f));     memset(lim, 0, sizeof(lim));     long long mx_pos = 0;     while (x) lim[++mx_pos] = x % 10, x /= 10;     return dfs(mx_pos, 0, 1, 1);   }   signed main() {     long long T = read();     while (T--) {       l = read(), r = read();       printf( %lld n , solve(r) - solve(l - 1));     }     return 0;   }   