#include <bits/stdc++.h>
using std::cin;
using std::cout;
const int maxn = 2e5 + 3, INF = 0x3f3f3f3f;
typedef int arr[maxn];
int c[19];
long long f[19][4];
long long Dfs(int x, int y, bool flag) {
  if (y > 3) return 0;
  if (!x) return 1;
  if (!flag && ~f[x][y]) return f[x][y];
  int lim = flag ? c[x] : 9;
  long long ans = 0;
  for (int i = (0); i <= (lim); ++i) {
    ans += Dfs(x - 1, y + (bool)i, flag && i == lim);
  }
  return flag ? ans : f[x][y] = ans;
}
long long Solve(long long x) {
  int tot = 0;
  while (x) {
    c[++tot] = x % 10;
    x /= 10;
  }
  return Dfs(tot, 0, 1);
}
int main() {
  int n;
  cin >> n;
  memset(f, -1, sizeof f);
  while (n--) {
    long long l, r;
    cin >> l >> r;
    cout << Solve(r) - Solve(l - 1) << '\n';
  }
  return 0;
}
