#include <bits/stdc++.h>
using namespace std;
int q;
bool read() {
  if (scanf("%d", &q) < 1) {
    return 0;
  }
  return 1;
}
int get_dig(char c) {
  if ('0' <= c && c <= '9') {
    return c - '0';
  }
  if ('a' <= c && c <= 'f') {
    return c - 'a' + 10;
  }
  return -1;
}
unsigned long long read_num() {
  string res;
  char c;
  while (1) {
    c = getchar();
    int d = get_dig(c);
    if (d == -1) {
      if (!res.empty()) {
        break;
      }
      continue;
    }
    res += c;
  }
  unsigned long long coef = 1;
  unsigned long long ans = 0;
  for (int i = int(((int)(res).size())) - 1; i >= 0; --i) {
    int d = get_dig(res[i]);
    ans += coef * d;
    coef *= 16;
  }
  return ans;
}
bool bit(int x, int i) { return (x >> i) & 1; }
unsigned long long dp[20][2][2][2];
unsigned long long solve(unsigned long long r) {
  if (!r) {
    return 0;
  }
  unsigned long long old = r;
  vector<int> R;
  for (int it = 0; it < int(16); ++it) {
    R.push_back(r % 16);
    r /= 16;
  }
  reverse(begin(R), end(R));
  r = old;
  unsigned long long ans = 0;
  for (int hb = 1; hb < 16; ++hb) {
    memset(dp, 0, sizeof dp);
    dp[0][0][0][0] = 1;
    for (int i = 0; i < int(16); ++i)
      for (int was16 = 0; was16 < int(2); ++was16)
        for (int was2 = 0; was2 < int(2); ++was2)
          for (int ls = 0; ls < int(2); ++ls) {
            long long cur_dp = dp[i][was16][was2][ls];
            if (!cur_dp) {
              continue;
            }
            for (int d = 0; d < int(16); ++d) {
              if (d > hb) {
                continue;
              }
              if (!ls && d > R[i]) {
                continue;
              }
              int nwas16 = was16 || d == hb;
              int nwas2 = was2;
              if (hb / 4 == 15 - i && bit(d, hb % 4)) {
                nwas2 = 1;
              }
              int nls = ls || d < R[i];
              dp[i + 1][nwas16][nwas2][nls] += cur_dp;
            }
          }
    unsigned long long cur = 0;
    cur += dp[16][1][1][0];
    cur += dp[16][1][1][1];
    ans += cur;
  }
  return ans;
}
void solve() {
  for (int it = 0; it < int(q); ++it) {
    unsigned long long l, r;
    l = read_num();
    r = read_num();
    unsigned long long ans = solve(r);
    if (l > 0) {
      ans -= solve(l - 1);
    }
    printf("%llu\n", ans);
  }
}
int main() {
  while (read()) {
    solve();
  }
  return 0;
}
