#include <bits/stdc++.h>
using namespace std;
template <typename T, typename U>
inline void chkmax(T& x, U y) {
  if (x < y) x = y;
}
template <typename T, typename U>
inline void chkmin(T& x, U y) {
  if (y < x) x = y;
}
int a[20];
long long solve(int x, int y, int m, long long n) {
  int an = 0;
  long long nn = n;
  while (n) a[an++] = n & 15, n >>= 4;
  if (an - 1 < x) return 0;
  long long ret = 0;
  int valid = 1;
  for (int i = an - 1; i >= 0; i--) {
    int cur = 0;
    if (i == x) {
      for (int j = 0; j <= m; j++)
        if (j >> y & 1) cur++;
    } else {
      cur = m + 1;
    }
    ret *= cur;
    if (!valid) continue;
    for (int j = 0; j < a[i] && j <= m; j++) {
      if (i == x) {
        if (j >> y & 1) ret++;
      } else {
        ret++;
      }
    }
    if (a[i] > m) valid = 0;
    if (i == x && (~a[i] >> y & 1)) valid = 0;
  }
  return ret;
}
long long calc(long long n) {
  if (n == 0) return 0;
  long long ret = 0;
  for (int i = 1; i <= 0xf; i++) {
    ret += solve(i / 4, i & 3, i, n + 1) - solve(i / 4, i & 3, i - 1, n + 1);
  }
  return ret;
}
int main() {
  int ncase;
  for (scanf("%d", &ncase); ncase--;) {
    long long l, r;
    scanf("%llx%llx", &l, &r);
    printf("%lld\n", calc(r) - calc(l - 1));
  }
  return 0;
}
