#include <bits/stdc++.h>
using namespace std;
char s[100], t[100];
int hi[100000], a[100], q, g[100000][20], h[100000][20];
long long f[20][20][2];
int num(char x) {
  if (x >= '0' && x <= '9')
    return x - '0';
  else
    return x - 'a' + 10;
}
void init(char *s) {
  int n = strlen(s + 1);
  long long val = 0;
  for (int i = 1; i <= n; i++) val = val * 16 + num(s[i]);
  if (!val) return void(s[0] = '#');
  for (int i = 1; i <= 15; i++) t[i] = '0';
  for (int i = 1; i <= n; i++) t[i + 15 - n] = s[i];
  for (int i = 1; i <= 15; i++) s[i] = t[i];
}
void dec(char *s) {
  if (s[0] == '#') return;
  int p = 15;
  while (s[p] == '0') p--;
  s[p]--;
  for (int i = p + 1; i <= 15; i++) s[i] = 'f';
}
void upd(long long &f, long long g) { f += g; }
long long calc(char *s) {
  if (s[0] == '#') return 0;
  for (int i = 1; i <= 15; i++) a[i] = num(s[i]);
  memset(f, 0, sizeof f);
  for (int i = 0; i <= 15; i++)
    if (i <= a[1]) f[1][i][a[1] > i] = 1;
  for (int i = 1; i <= 10; i++)
    for (int j = 0; j <= 15; j++) {
      for (int k = 0; k <= 15; k++) upd(f[i + 1][max(j, k)][1], f[i][j][1]);
      for (int k = 0; k <= a[i + 1] - 1; k++)
        upd(f[i + 1][max(j, k)][1], f[i][j][0]);
      upd(f[i + 1][max(j, a[i + 1])][0], f[i][j][0]);
    }
  int res = 0;
  for (int i = 12; i <= 15; i++) res = res * 16 + a[i];
  long long ans = 0;
  for (int i = 0; i <= 15; i++) {
    upd(ans, f[11][i][1] * g[(1 << 16) - 1][i]);
    upd(ans, f[11][i][1] * h[(1 << 16) - 1][i]);
    upd(ans, f[11][i][0] * g[res][i]);
    upd(ans, f[11][i][0] * h[res][i]);
  }
  return ans;
}
int main() {
  for (int i = 0; i <= (1 << 16) - 1; i++) {
    for (int j = 15; ~j; j -= 4) {
      int num = 0;
      for (int k = 0; k < 4; k++) num = (num << 1) + (i >> (j - k) & 1);
      hi[i] = max(hi[i], num);
    }
  }
  for (int i = 1; i <= (1 << 16) - 1; i++)
    for (int j = 0; j <= 15; j++) {
      g[i][j] = g[i - 1][j] + (hi[i] <= j && (i >> j & 1));
      h[i][j] = h[i - 1][j] + (hi[i] > j && (i >> hi[i] & 1));
    }
  scanf("%d", &q);
  while (q--) {
    char l[20], r[20];
    l[0] = r[0] = 0;
    scanf("%s%s", l + 1, r + 1);
    init(r);
    init(l);
    dec(l);
    printf("%lld\n", calc(r) - calc(l));
  }
}
