#include<bits/stdc++.h>
using namespace std;
string str;
int dp[10][10][2][100][100];
int numDig;
int solve(int idx, int realidx, int tight, int e, int o){
if(idx == numDig){
return realidx % 2 ? ((e-o)==1 ? 1 : 0) : ((o-e) == 1 ? 1 : 0);
}
if(dp[idx][realidx][tight][e][o] != -1)
return dp[idx][realidx][tight][e][o];
int ans = 0;
if(tight){
for(int i=0; i<str[idx]-'0'; i++){
int newRealidx = (realidx || (i!=0))?realidx+1:0;
int newo = newRealidx == 0 ? 0 : ((newRealidx)%2 ? o+i: o);
int newe = newRealidx == 0 ? 0 : ((newRealidx)%2 ? e : e+i);
ans += solve(idx+1, newRealidx, 0, newe, newo);
}
int newRealidx = (realidx>0 || (str[idx]-'0' !=0))?realidx+1:0;
int newo = newRealidx == 0 ? 0 : ((newRealidx)%2 ? o+str[idx]-'0' : o);
int newe = newRealidx == 0 ? 0 : ((newRealidx)%2 ? e : e+str[idx]-'0');
ans += solve(idx+1, newRealidx, 1, newe, newo);
} else {
for(int i=0; i<=9; i++){
int newRealidx = (realidx || (i!=0))?realidx+1:0;
int newo = newRealidx == 0 ? 0 : ((newRealidx)%2 ? o+i : o);
int newe = newRealidx == 0 ? 0 : ((newRealidx)%2 ? e : e+i);
ans += solve(idx+1, newRealidx, 0, newe, newo);
}
}
return dp[idx][realidx][tight][e][o] = ans;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int a, b;
int ans = 0;
scanf("%d%d",&a,&b);
a--;
if(b>0){
str = to_string(b);
numDig = str.size();
memset(dp, -1, sizeof dp);
ans = solve(0, 0, 1, 0, 0);
//printf("ub : %d\n",ans);
}
if(a>0){
str = to_string(a);
numDig = str.size();
memset(dp, -1, sizeof dp);
ans -= solve(0, 0, 1, 0, 0);
}
printf("%d\n",ans);
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJpbmcgc3RyOwoKaW50IGRwWzEwXVsxMF1bMl1bMTAwXVsxMDBdOwppbnQgbnVtRGlnOwoKaW50IHNvbHZlKGludCBpZHgsIGludCByZWFsaWR4LCBpbnQgdGlnaHQsIGludCBlLCBpbnQgbyl7CiAgICBpZihpZHggPT0gbnVtRGlnKXsKICAgICAgICByZXR1cm4gcmVhbGlkeCAlIDIgPyAoKGUtbyk9PTEgPyAxIDogMCkgOiAoKG8tZSkgPT0gMSA/IDEgOiAwKTsKICAgIH0KICAgIGlmKGRwW2lkeF1bcmVhbGlkeF1bdGlnaHRdW2VdW29dICE9IC0xKQogICAgICAgIHJldHVybiBkcFtpZHhdW3JlYWxpZHhdW3RpZ2h0XVtlXVtvXTsKICAgIGludCBhbnMgPSAwOwogICAgaWYodGlnaHQpewogICAgICAgIGZvcihpbnQgaT0wOyBpPHN0cltpZHhdLScwJzsgaSsrKXsKICAgICAgICAgICAgaW50IG5ld1JlYWxpZHggPSAocmVhbGlkeCB8fCAoaSE9MCkpP3JlYWxpZHgrMTowOwogICAgICAgICAgICBpbnQgbmV3byA9IG5ld1JlYWxpZHggPT0gMCA/IDAgOiAoKG5ld1JlYWxpZHgpJTIgPyBvK2k6IG8pOwogICAgICAgICAgICBpbnQgbmV3ZSA9IG5ld1JlYWxpZHggPT0gMCA/IDAgOiAoKG5ld1JlYWxpZHgpJTIgPyAgZSA6IGUraSk7CiAgICAgICAgICAgIGFucyArPSBzb2x2ZShpZHgrMSwgbmV3UmVhbGlkeCwgMCwgbmV3ZSwgbmV3byk7CiAgICAgICAgfQogICAgICAgIGludCBuZXdSZWFsaWR4ID0gKHJlYWxpZHg+MCB8fCAoc3RyW2lkeF0tJzAnICE9MCkpP3JlYWxpZHgrMTowOwogICAgICAgIGludCBuZXdvID0gbmV3UmVhbGlkeCA9PSAwID8gMCA6ICgobmV3UmVhbGlkeCklMiA/IG8rc3RyW2lkeF0tJzAnIDogbyk7CiAgICAgICAgaW50IG5ld2UgPSBuZXdSZWFsaWR4ID09IDAgPyAwIDogKChuZXdSZWFsaWR4KSUyID8gIGUgOiBlK3N0cltpZHhdLScwJyk7CiAgICAgICAgYW5zICs9IHNvbHZlKGlkeCsxLCBuZXdSZWFsaWR4LCAxLCBuZXdlLCBuZXdvKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZm9yKGludCBpPTA7IGk8PTk7IGkrKyl7CiAgICAgICAgICAgIGludCBuZXdSZWFsaWR4ID0gKHJlYWxpZHggfHwgKGkhPTApKT9yZWFsaWR4KzE6MDsKICAgICAgICAgICAgaW50IG5ld28gPSBuZXdSZWFsaWR4ID09IDAgPyAwIDogKChuZXdSZWFsaWR4KSUyID8gIG8raSA6IG8pOwogICAgICAgICAgICBpbnQgbmV3ZSA9IG5ld1JlYWxpZHggPT0gMCA/IDAgOiAoKG5ld1JlYWxpZHgpJTIgPyAgZSA6IGUraSk7CiAgICAgICAgICAgIGFucyArPSBzb2x2ZShpZHgrMSwgbmV3UmVhbGlkeCwgMCwgbmV3ZSwgbmV3byk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGRwW2lkeF1bcmVhbGlkeF1bdGlnaHRdW2VdW29dID0gYW5zOwp9CgppbnQgbWFpbigpewogICAgaW50IHQ7CiAgICBzY2FuZigiJWQiLCZ0KTsKICAgIHdoaWxlKHQtLSl7CiAgICAgICAgaW50IGEsIGI7CiAgICAgICAgaW50IGFucyA9IDA7CiAgICAgICAgc2NhbmYoIiVkJWQiLCZhLCZiKTsKICAgICAgICBhLS07CiAgICAgICAgaWYoYj4wKXsKICAgICAgICAgICAgc3RyID0gdG9fc3RyaW5nKGIpOwogICAgICAgICAgICBudW1EaWcgPSBzdHIuc2l6ZSgpOwogICAgICAgICAgICBtZW1zZXQoZHAsIC0xLCBzaXplb2YgZHApOwogICAgICAgICAgICBhbnMgPSBzb2x2ZSgwLCAwLCAxLCAwLCAwKTsKICAgICAgICAgICAgLy9wcmludGYoInViIDogJWRcbiIsYW5zKTsKICAgICAgICB9CiAgICAgICAgaWYoYT4wKXsKICAgICAgICAgICAgc3RyID0gdG9fc3RyaW5nKGEpOwogICAgICAgICAgICBudW1EaWcgPSBzdHIuc2l6ZSgpOwogICAgICAgICAgICBtZW1zZXQoZHAsIC0xLCBzaXplb2YgZHApOwogICAgICAgICAgICBhbnMgLT0gc29sdmUoMCwgMCwgMSwgMCwgMCk7CiAgICAgICAgfQogICAgICAgIHByaW50ZigiJWRcbiIsYW5zKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==