#include <bits/stdc++.h>
const int N = 1e6;
const int M = 20;
#define ll long long
using namespace std;
ll n, m;
int t;
vector<ll> v1, v2;
ll dp[N+3];
void build(ll n, ll m){
n--;
while(n > 0){
v1.push_back(n%10);
n /= 10;
}
while(m > 0){
v2.push_back(m%10);
m /= 10;
}
v1.push_back(0), v2.push_back(0);
reverse(v1.begin(), v1.end());
reverse(v2.begin(), v2.end());
dp[1] = 9;
for(int i=2;i<=M;i++){
dp[i] = dp[i-1]*9;
}
dp[1] = 10;
}
ll num(ll n){
ll res = 1;
while(n--)res*=9;
return res;
}
ll dpdigit(ll pos, vector<ll> v){
if(pos == v.size()-1){
if(v[pos] >= v[pos-1])return v[pos];
return v[pos] + 1;
}
int pos2 = pos + 1;
if(pos == 1){
ll sum = v.size() - pos - 1;
ll ans = 0;
for(int i=1;i<=sum;i++)ans += dp[i];
ll xxx = num(sum);
ans += dpdigit(pos2, v) + xxx*max(0LL, v[pos] - 1);
return ans;
}
ll sum = v.size() - pos - 1;
ll sumdigit = num(pos);
if(v[pos] == v[pos - 1])return sumdigit*v[pos];
else if(v[pos] < v[pos - 1]){
ll ans = dpdigit(pos2, v) + sumdigit*v[pos];
return ans;
}
ll ans = dpdigit(pos2, v) + sumdigit*max(0LL, v[pos] - 1);
return ans;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>t;
while(t--){
cin>>n>>m;
for(int i=0;i<=M;i++)dp[i] = 0;
v1.clear(), v2.clear();
build(n, m);
ll a, b;
if(n <= 9)a = n;
else a = dpdigit(1, v1);
if(m <= 9)b = m+1;
else b = dpdigit(1, v2);
cout<<b - a<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CmNvbnN0IGludCBOID0gMWU2Owpjb25zdCBpbnQgTSA9IDIwOwojZGVmaW5lIGxsIGxvbmcgbG9uZwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbGwgbiwgbTsKaW50IHQ7CnZlY3RvcjxsbD4gdjEsIHYyOwpsbCBkcFtOKzNdOwoKdm9pZCBidWlsZChsbCBuLCBsbCBtKXsKICAgIG4tLTsKICAgIHdoaWxlKG4gPiAwKXsKICAgICAgICB2MS5wdXNoX2JhY2sobiUxMCk7CiAgICAgICAgbiAvPSAxMDsKICAgIH0KICAgIHdoaWxlKG0gPiAwKXsKICAgICAgICB2Mi5wdXNoX2JhY2sobSUxMCk7CiAgICAgICAgbSAvPSAxMDsKICAgIH0KICAgIHYxLnB1c2hfYmFjaygwKSwgdjIucHVzaF9iYWNrKDApOwogICAgcmV2ZXJzZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7CiAgICByZXZlcnNlKHYyLmJlZ2luKCksIHYyLmVuZCgpKTsKCiAgICBkcFsxXSA9IDk7CiAgICBmb3IoaW50IGk9MjtpPD1NO2krKyl7CiAgICAgICAgZHBbaV0gPSBkcFtpLTFdKjk7CiAgICB9CiAgICBkcFsxXSA9IDEwOwp9CgpsbCBudW0obGwgbil7CiAgICBsbCByZXMgPSAxOwogICAgd2hpbGUobi0tKXJlcyo9OTsKICAgIHJldHVybiByZXM7Cn0KCmxsIGRwZGlnaXQobGwgcG9zLCB2ZWN0b3I8bGw+IHYpewogICAgaWYocG9zID09IHYuc2l6ZSgpLTEpewogICAgICAgIGlmKHZbcG9zXSA+PSB2W3Bvcy0xXSlyZXR1cm4gdltwb3NdOwogICAgICAgIHJldHVybiB2W3Bvc10gKyAxOwogICAgfQogICAgaW50IHBvczIgPSBwb3MgKyAxOwogICAgaWYocG9zID09IDEpewogICAgICAgIGxsIHN1bSA9IHYuc2l6ZSgpIC0gcG9zIC0gMTsKICAgICAgICBsbCBhbnMgPSAwOwogICAgICAgIGZvcihpbnQgaT0xO2k8PXN1bTtpKyspYW5zICs9IGRwW2ldOwogICAgICAgIGxsIHh4eCA9IG51bShzdW0pOwogICAgICAgIGFucyArPSBkcGRpZ2l0KHBvczIsIHYpICsgeHh4Km1heCgwTEwsIHZbcG9zXSAtIDEpOwogICAgICAgIHJldHVybiBhbnM7CiAgICB9CiAgICBsbCBzdW0gPSB2LnNpemUoKSAtIHBvcyAtIDE7CiAgICBsbCBzdW1kaWdpdCA9IG51bShwb3MpOwogICAgaWYodltwb3NdID09IHZbcG9zIC0gMV0pcmV0dXJuIHN1bWRpZ2l0KnZbcG9zXTsKICAgIGVsc2UgaWYodltwb3NdIDwgdltwb3MgLSAxXSl7CiAgICAgICAgbGwgYW5zID0gZHBkaWdpdChwb3MyLCB2KSArIHN1bWRpZ2l0KnZbcG9zXTsKICAgICAgICByZXR1cm4gYW5zOwogICAgfQogICAgbGwgYW5zID0gZHBkaWdpdChwb3MyLCB2KSArIHN1bWRpZ2l0Km1heCgwTEwsIHZbcG9zXSAtIDEpOwogICAgcmV0dXJuIGFuczsKfQoKaW50IG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY2luPj50OwogICAgd2hpbGUodC0tKXsKICAgICAgICBjaW4+Pm4+Pm07CiAgICAgICAgZm9yKGludCBpPTA7aTw9TTtpKyspZHBbaV0gPSAwOwogICAgICAgIHYxLmNsZWFyKCksIHYyLmNsZWFyKCk7CiAgICAgICAgYnVpbGQobiwgbSk7CiAgICAgICAgbGwgYSwgYjsKICAgICAgICBpZihuIDw9IDkpYSA9IG47CiAgICAgICAgZWxzZSBhID0gZHBkaWdpdCgxLCB2MSk7CiAgICAgICAgaWYobSA8PSA5KWIgPSBtKzE7CiAgICAgICAgZWxzZSBiID0gZHBkaWdpdCgxLCB2Mik7CiAgICAgICAgY291dDw8YiAtIGE8PCJcbiI7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K