#include <bits/stdc++.h>
using namespace std;
int dp[10][2][50][50];
string toString(int num){
stringstream ss;
ss << num;
return ss.str();
}
int digdp(int index, int isEqual, int es, int os, string num, int limit){
int &res = dp[index][isEqual][es][os];
if(res==-1){
res=0;
if(index==limit){
if(!isEqual && (es-os)==1){res=1;cout<<"("<<es<<" "<<os<<") ";}
}
else{
if(isEqual){
for(int i=0; i<=num[index]-'0'; i++){
if(i==num[index]-'0'){
res += digdp(index+1, 1, (index%2)?es:es+i, (index%2)?os+i:os, num, limit);
}
else{
res += digdp(index+1, 0, (index%2)?es:es+i, (index%2)?os+i:os, num, limit);
}
}
}
else{
for(int i=0; i<=9; i++){
res += digdp(index+1, 0, (index%2)?es:es+i, (index%2)?os+i:os, num, limit);
}
}
}
}
return res;
}
int solve(int n){
if(n<10)return 0;
int ret = 0;
string num = toString(n);
for(int i=1; i<=num[0]-'0'; i++){
ret += digdp(0,1,0,0,num,num.length());
}
return ret;
}
int main() {
int t;
scanf("%d",&t);
while(t--){
int a,b;
cin>>a>>b;
memset(dp,-1,sizeof(dp));
a = solve(a);
memset(dp,-1,sizeof(dp));
b = solve(++b);
cout<<b-a<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgZHBbMTBdWzJdWzUwXVs1MF07CgpzdHJpbmcgdG9TdHJpbmcoaW50IG51bSl7CglzdHJpbmdzdHJlYW0gc3M7CiAgIAlzcyA8PCBudW07CiAgIAlyZXR1cm4gc3Muc3RyKCk7Cgl9CgppbnQgZGlnZHAoaW50IGluZGV4LCBpbnQgaXNFcXVhbCwgaW50IGVzLCBpbnQgb3MsIHN0cmluZyBudW0sIGludCBsaW1pdCl7CglpbnQgJnJlcyA9IGRwW2luZGV4XVtpc0VxdWFsXVtlc11bb3NdOwoJaWYocmVzPT0tMSl7CgkJcmVzPTA7CgkJaWYoaW5kZXg9PWxpbWl0KXsKCQkJaWYoIWlzRXF1YWwgJiYgKGVzLW9zKT09MSl7cmVzPTE7Y291dDw8IigiPDxlczw8IiAiPDxvczw8IikgIjt9CgkJfQoJCWVsc2V7CgkJCWlmKGlzRXF1YWwpewoJCQkJZm9yKGludCBpPTA7IGk8PW51bVtpbmRleF0tJzAnOyBpKyspewoJCQkJCWlmKGk9PW51bVtpbmRleF0tJzAnKXsKCQkJCQkJcmVzICs9IGRpZ2RwKGluZGV4KzEsIDEsIChpbmRleCUyKT9lczplcytpLCAoaW5kZXglMik/b3MraTpvcywgbnVtLCBsaW1pdCk7CgkJCQkJfQoJCQkJCWVsc2V7CgkJCQkJCXJlcyArPSBkaWdkcChpbmRleCsxLCAwLCAoaW5kZXglMik/ZXM6ZXMraSwgKGluZGV4JTIpP29zK2k6b3MsIG51bSwgbGltaXQpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQllbHNlewoJCQkJZm9yKGludCBpPTA7IGk8PTk7IGkrKyl7CgkJCQkJcmVzICs9IGRpZ2RwKGluZGV4KzEsIDAsIChpbmRleCUyKT9lczplcytpLCAoaW5kZXglMik/b3MraTpvcywgbnVtLCBsaW1pdCk7CgkJCQl9CgkJCX0KCQl9Cgl9CglyZXR1cm4gcmVzOwp9CgppbnQgc29sdmUoaW50IG4pewoJaWYobjwxMClyZXR1cm4gMDsKCWludCByZXQgPSAwOwoJc3RyaW5nIG51bSA9IHRvU3RyaW5nKG4pOwoJZm9yKGludCBpPTE7IGk8PW51bVswXS0nMCc7IGkrKyl7CgkJcmV0ICs9IGRpZ2RwKDAsMSwwLDAsbnVtLG51bS5sZW5ndGgoKSk7Cgl9CglyZXR1cm4gcmV0OwoJfQoKaW50IG1haW4oKSB7CglpbnQgdDsKCXNjYW5mKCIlZCIsJnQpOwoJd2hpbGUodC0tKXsKCQlpbnQgYSxiOwoJCWNpbj4+YT4+YjsKCQltZW1zZXQoZHAsLTEsc2l6ZW9mKGRwKSk7CgkJYSA9IHNvbHZlKGEpOwoJCW1lbXNldChkcCwtMSxzaXplb2YoZHApKTsKCQliID0gc29sdmUoKytiKTsKCQljb3V0PDxiLWE8PGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==