#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int significativo;
int v[N];
vector<int> possible[16];
long long dp[15][2][2];
int vis[15][2][2], viscnt;
int position[N];
long long solve(int pos, int menor, int usou) {
  if (pos == -1) return usou;
  if (vis[pos][menor][usou] == viscnt) return dp[pos][menor][usou];
  vis[pos][menor][usou] = viscnt;
  long long r = 0;
  if (position[significativo] == pos) {
    if (menor) {
      for (auto pode : possible[significativo]) {
        if (pode > significativo) continue;
        r += solve(pos - 1, menor, pode == significativo ? 1 : usou);
      }
    } else {
      for (auto pode : possible[significativo]) {
        if (pode > significativo) continue;
        if (pode > v[pos]) continue;
        if (pode == v[pos])
          r += solve(pos - 1, 0, pode == significativo ? 1 : usou);
        else
          r += solve(pos - 1, 1, pode == significativo ? 1 : usou);
      }
    }
  } else {
    if (menor) {
      r += solve(pos - 1, menor, usou) * significativo;
      r += solve(pos - 1, menor, 1);
    } else {
      r += solve(pos - 1, 1, usou) * min(v[pos], significativo);
      if (v[pos] == significativo)
        r += solve(pos - 1, 0, 1);
      else if (v[pos] > significativo)
        r += solve(pos - 1, 1, 1);
      else
        r += solve(pos - 1, 0, usou);
    }
  }
  return dp[pos][menor][usou] = r;
}
void converteHexa(long long x) {
  vector<int> w;
  while (x) {
    w.push_back(x % 16);
    x /= 16;
  }
  for (int i = w.size() - 1; i >= 0; i--) v[i] = w[i];
  for (int i = 14; i >= (int)w.size(); i--) v[i] = 0;
}
int main(void) {
  for (int i = 0; i <= 15; i++) {
    for (int j = 0; j <= 15; j++) {
      if ((1 << (i % 4)) & j) possible[i].push_back(j);
    }
    position[i] = i / 4;
  }
  int q;
  scanf("%d", &q);
  while (q--) {
    long long x, y;
    scanf("%llx %llx", &x, &y);
    long long res = 0;
    converteHexa(y);
    viscnt++;
    for (significativo = 15; significativo >= 0; significativo--, viscnt++)
      res += solve(14, 0, 0);
    if (x) {
      converteHexa(x - 1);
      viscnt++;
      for (significativo = 15; significativo >= 0; significativo--, viscnt++)
        res -= solve(14, 0, 0);
    }
    cout << res << endl;
  }
  return 0;
}
