#include <bits/stdc++.h>
using namespace std;
string l, r;
long long f[16][16][1 << 16];
long long g[16][16], h[16][16][16];
void init() {
  int m16 = (1 << 16) - 1;
  for (int j = 0; j < 16; ++j) f[1][j][j] = 1;
  for (int i = 1; i < 15; ++i) {
    for (int j = 0; j < 16; ++j) {
      for (int k = 0; k <= m16; ++k)
        if (f[i][j][k]) {
          for (int d = 0; d < 16; ++d) {
            int s = i < 4 ? (d << (i * 4)) : 0;
            f[i + 1][max(j, d)][k | s] += f[i][j][k];
          }
        }
    }
  }
  for (int i = 1; i < 16; ++i) {
    for (int j = 0; j < 16; ++j) {
      for (int k = 0; k <= m16; ++k) {
        g[i][j] += f[i][j][k];
        for (int l = 0; l < 16; ++l)
          if (k & (1 << l)) h[i][j][l] += f[i][j][k];
      }
    }
  }
}
long long toInt(string x) {
  long long rr = 0;
  for (int i = 0; i < x.size(); ++i) {
    rr = rr * 16 + (x[i] <= '9' ? x[i] - '0' : x[i] - 'a' + 10);
  }
  return rr;
}
vector<int> tmp, digits;
long long bruteforce(long long x) {
  long long rr = 0;
  for (int i = 1; i <= x; ++i) {
    tmp.clear();
    int v = 0;
    int j = i;
    while (j) {
      v = max(v, j % 16);
      j /= 16;
    }
    if (i & (1 << v)) ++rr;
  }
  return rr;
}
long long count2(int len, long long cur, int bitmax) {
  if (len <= 0) return (cur & (1 << bitmax)) ? 1 : 0;
  long long rr = 0;
  for (int j = 0; j < 16; ++j) {
    int k = max(j, bitmax), block = k / 4 + 1;
    if (len >= block) {
      rr += h[len][j][k];
    } else if (cur & (1 << k))
      rr += g[len][j];
  }
  return rr;
}
long long count(long long x) {
  if (x <= 0) return 0;
  tmp.clear();
  while (x) {
    tmp.push_back(x % 16);
    x /= 16;
  }
  int n = tmp.size();
  long long rr = 0, cur = 0;
  int bitmax = -1;
  for (int i = n; i; --i) {
    for (int d = 0; d < tmp.back() + (i <= 1); ++d) {
      int v = max(bitmax, d);
      long long cmask = cur | ((1LL * d) << (4 * (i - 1)));
      rr += count2(i - 1, cmask, v);
    }
    bitmax = max(bitmax, tmp.back());
    cur |= ((1LL * tmp.back()) << (4 * (i - 1)));
    tmp.pop_back();
  }
  return rr;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie();
  cout.tie();
  init();
  int q;
  cin >> q;
  while (q--) {
    cin >> l >> r;
    cout << count(toInt(r)) - count(toInt(l) - 1) << endl;
  }
  return 0;
}
