func_code_string: #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;   }   