#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;
}