#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int Case = 1, t[100];
ll n, m, f[20][20][2005];
ll dfs(int pos,int o,int val,int lim) {
if (pos==0) return val==0;
if (val<0) return 0;
if (!lim && f[pos][o][val]!=-1) return f[pos][o][val];
ll ans=0;
int end=lim ? t[pos] : 9;
for (int i=0;i<=end;i++)
ans+=dfs(pos-1,o,val+(pos-o)*i,lim && i==end);
if (!lim) f[pos][o][val]=ans;
return ans;
}
ll cal(ll x) {
int len = 0;
while(x) {
t[++len] = x%10;
x /= 10;
}
ll res = 0;
for(int i = 1; i <= len; i++)
res += dfs(len, i, 0, 1);
return res - (1ll*len-1);
}
void solve() {
scanf("%lld%lld", &n, &m);
printf("%lld\n", cal(m)-cal(n-1));
return;
}
int main() {
memset(f, -1, sizeof(f));
scanf("%d", &Case);
while(Case--) {
solve();
}
return 0;
}