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