#include <bits/stdc++.h>
using namespace std;
#define ub upper_bound // first element > val(itr)
#define lb lower_bound // first element >= val(itr)
#define sz(a) int((a).size())
#define pb push_back
#define all(c) (c).begin(),(c).end()
#define tr(c,i) for(typeof((c)).begin() i = (c).begin(); i != (c).end(); i++)
#define present(c,x) ((c).find(x) != (c).end())
#define cpresent(c,x) (find(all(c),x) != (c).end())
#define mem(a,b) memset( a, b, sizeof(a) )
#define bitcount(a) __builtin_popcount(a) // count set bits
#define lzcount(x) __builtin_clz(x) // count leading zeros in binary representation of number
#define tzcount(x) __builtin_ctz(x) // count trailing zeros in binary representation of number
#define FAST ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
typedef long long int ll;
const ll MOD = 1e9+7;
template<typename T> T gcd(T a,T b){ if(b>a) return gcd(b,a);return b==0?a:gcd(b,a%b); }
template<typename T> T lcm(T a, T b) { return a * b / gcd(a, b); }
template<typename T> T fast_power(T x,T y,ll m=MOD){T ans=1;while(y>0){if(y&1LL) ans=(ans*x)%m;y>>=1LL;x=(x*x)%m;}return ans%m;}
/*
inline ll mod(ll x,ll n) {if (x < n) return x; if (x >= n) return x - n;}
string IntToString(ll a){ ostringstream temp; temp << a; return temp.str();}
ll findMMI_fermat(ll n,ll M) {ll ans= fast_power(n,M-2,M);return ans;}//i.e In (a/b)%M..it calculates MMI of b wrt M,only if M is prime
ll add(ll a,ll b,ll M) { return mod(( mod(a,M ) + mod(b,M )),M); }
ll sub(ll a, ll b,ll M) { return mod((mod(a,M ) + M - mod(b,M )),M); }
ll mult(ll a,ll b,ll M) { return mod(( mod(a,M)*mod(b,M) ),M) ; }
bool isprime(ll a){ if(a==2) {return 1;}if(!(a&1) ) {return 0;}for(ll i=3;i*i<=a;i+=2){if(a%i==0) {return 0;} } return 1;}
/* -------------------------------Main Code------------------------------- */
vector<int> num;
ll dp[300][2][300];//pos,restricted,sum
ll call(int pos,int f1,int sum){
if(pos==num.size()){
return sum;
}
ll &ret = dp[pos][f1][sum];
if(ret!=-1) return ret;
int LIM = f1 ? 9 : num[pos];
ll ans = 0;
for(int i=0;i<=LIM;i++){
ans += call(pos+1,i<num[pos] ? 1 : f1 ,sum+i );
}
return ret = ans;
}
ll solve(int x){
num.clear();
while(x){
num.push_back(x%10);
x/=10;
}
reverse(num.begin(),num.end());
mem(dp,-1);
return call(0,0,0);
}
int main(){
FAST
int t;cin>>t;
while(t--){
int a,b;cin>>a>>b;
cout<<solve(b)-solve(a-1)<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIHViICAgICAgICB1cHBlcl9ib3VuZCAgICAgICAgICAgIC8vIGZpcnN0IGVsZW1lbnQgPiAgdmFsKGl0cikKI2RlZmluZSBsYiAgICAgICAgbG93ZXJfYm91bmQgICAgICAgICAgICAvLyBmaXJzdCBlbGVtZW50ID49IHZhbChpdHIpCgojZGVmaW5lIHN6KGEpIGludCgoYSkuc2l6ZSgpKQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGFsbChjKSAoYykuYmVnaW4oKSwoYykuZW5kKCkKI2RlZmluZSB0cihjLGkpIGZvcih0eXBlb2YoKGMpKS5iZWdpbigpIGkgPSAoYykuYmVnaW4oKTsgaSAhPSAoYykuZW5kKCk7IGkrKykKI2RlZmluZSBwcmVzZW50KGMseCkgKChjKS5maW5kKHgpICE9IChjKS5lbmQoKSkgCiNkZWZpbmUgY3ByZXNlbnQoYyx4KSAoZmluZChhbGwoYykseCkgIT0gKGMpLmVuZCgpKSAKI2RlZmluZSBtZW0oYSxiKSBtZW1zZXQoIGEsIGIsIHNpemVvZihhKSApCgojZGVmaW5lIGJpdGNvdW50KGEpIF9fYnVpbHRpbl9wb3Bjb3VudChhKSAgIC8vIGNvdW50IHNldCBiaXRzCiNkZWZpbmUgbHpjb3VudCh4KSBfX2J1aWx0aW5fY2x6KHgpICAgICAgICAvLyBjb3VudCBsZWFkaW5nIHplcm9zIGluIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBudW1iZXIKI2RlZmluZSB0emNvdW50KHgpIF9fYnVpbHRpbl9jdHooeCkgICAgICAgIC8vIGNvdW50IHRyYWlsaW5nIHplcm9zIGluIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBudW1iZXIKCiNkZWZpbmUgRkFTVCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKG51bGxwdHIpO2NvdXQudGllKG51bGxwdHIpOwoKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwpjb25zdCBsbCBNT0QgPSAxZTkrNzsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZ2NkKFQgYSxUIGIpeyBpZihiPmEpIHJldHVybiBnY2QoYixhKTtyZXR1cm4gYj09MD9hOmdjZChiLGElYik7IH0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBsY20oVCBhLCBUIGIpIHsgcmV0dXJuIGEgKiBiIC8gZ2NkKGEsIGIpOyB9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZmFzdF9wb3dlcihUIHgsVCB5LGxsIG09TU9EKXtUIGFucz0xO3doaWxlKHk+MCl7aWYoeSYxTEwpIGFucz0oYW5zKngpJW07eT4+PTFMTDt4PSh4KngpJW07fXJldHVybiBhbnMlbTt9Ci8qCmlubGluZSBsbCBtb2QobGwgeCxsbCBuKSB7aWYgKHggPCBuKSByZXR1cm4geDsgaWYgKHggPj0gbikgcmV0dXJuIHggLSBuO30Kc3RyaW5nIEludFRvU3RyaW5nKGxsIGEpeyBvc3RyaW5nc3RyZWFtIHRlbXA7IHRlbXAgPDwgYTsgcmV0dXJuIHRlbXAuc3RyKCk7fQpsbCBmaW5kTU1JX2Zlcm1hdChsbCBuLGxsIE0pIHtsbCBhbnM9IGZhc3RfcG93ZXIobixNLTIsTSk7cmV0dXJuIGFuczt9Ly9pLmUgSW4gKGEvYiklTS4uaXQgY2FsY3VsYXRlcyBNTUkgb2YgYiB3cnQgTSxvbmx5IGlmIE0gaXMgcHJpbWUKbGwgYWRkKGxsIGEsbGwgYixsbCBNKSAgeyByZXR1cm4gbW9kKCggbW9kKGEsTSApICsgbW9kKGIsTSApKSxNKTsgICAgIH0KbGwgc3ViKGxsIGEsIGxsIGIsbGwgTSkgeyByZXR1cm4gbW9kKChtb2QoYSxNICkgKyBNIC0gbW9kKGIsTSApKSxNKTsgICB9CmxsIG11bHQobGwgYSxsbCBiLGxsIE0pIHsgcmV0dXJuICBtb2QoKCBtb2QoYSxNKSptb2QoYixNKSApLE0pIDsgfQpib29sIGlzcHJpbWUobGwgYSl7IGlmKGE9PTIpIHtyZXR1cm4gMTt9aWYoIShhJjEpICkge3JldHVybiAwO31mb3IobGwgaT0zO2kqaTw9YTtpKz0yKXtpZihhJWk9PTApIHtyZXR1cm4gMDt9IH0gcmV0dXJuIDE7fSAKCiAgCiAgICAgICAgICAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1NYWluIENvZGUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCQkKCQkJCnZlY3RvcjxpbnQ+IG51bTsKbGwgZHBbMzAwXVsyXVszMDBdOy8vcG9zLHJlc3RyaWN0ZWQsc3VtCgpsbCBjYWxsKGludCBwb3MsaW50IGYxLGludCBzdW0pewoJaWYocG9zPT1udW0uc2l6ZSgpKXsKCQlyZXR1cm4gc3VtOwoJfQoKCWxsICZyZXQgPSBkcFtwb3NdW2YxXVtzdW1dOwoJaWYocmV0IT0tMSkgcmV0dXJuIHJldDsKCglpbnQgTElNID0gZjEgPyA5IDogbnVtW3Bvc107CglsbCBhbnMgPSAwOwoKCWZvcihpbnQgaT0wO2k8PUxJTTtpKyspewoJCWFucyArPSBjYWxsKHBvcysxLGk8bnVtW3Bvc10gPyAxIDogZjEgLHN1bStpICk7Cgl9CgoJcmV0dXJuIHJldCA9IGFuczsKfQoKbGwgc29sdmUoaW50IHgpewoJbnVtLmNsZWFyKCk7Cgl3aGlsZSh4KXsKCQludW0ucHVzaF9iYWNrKHglMTApOwoJCXgvPTEwOwoJfQoJcmV2ZXJzZShudW0uYmVnaW4oKSxudW0uZW5kKCkpOwoJbWVtKGRwLC0xKTsKCXJldHVybiBjYWxsKDAsMCwwKTsKfQoKCmludCBtYWluKCl7CiAgICBGQVNUCglpbnQgdDtjaW4+PnQ7Cgl3aGlsZSh0LS0pewoJCWludCBhLGI7Y2luPj5hPj5iOwoJCWNvdXQ8PHNvbHZlKGIpLXNvbHZlKGEtMSk8PGVuZGw7Cgl9CglyZXR1cm4gMDsKfQoKIAkKCgo=