func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<long long> inp;   long long lim;   long long dp[25][2][2][5];   long long DP(long long pos, long long isSmall, long long isStart,                long long val) {     if (val > 3) return 0;     if (pos == lim) {       return 1;     }     if (dp[pos][isSmall][isStart][val] != -1)       return dp[pos][isSmall][isStart][val];     long long ses = isSmall ? 9 : inp[pos];     long long ret = 0;     if (!isStart) {       for (int i = 0; i <= ses; i++) {         ret += DP(pos + 1, isSmall | i < inp[pos], 0, (i != 0) + val);       }     } else {       for (int i = 1; i <= ses; i++) {         ret += DP(pos + 1, isSmall | i < inp[pos], 0, (i != 0) + val);       }       ret += DP(pos + 1, 1, 1, 0);     }     return dp[pos][isSmall][isStart][val] = ret;   }   long long cal(long long x) {     inp.clear();     while (x) {       inp.push_back(x % 10);       x = x / 10;     }     reverse(inp.begin(), inp.end());     lim = inp.size();     memset(dp, -1, sizeof(dp));     return DP(0, 0, 1, 0);   }   int main() {     long long T;     cin >> T;     while (T--) {       long long x, y;       cin >> x >> y;       cout << cal(y) - cal(x - 1) << endl;     }   }   