#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define ull unsigned long long
#define f first
#define ith_op second
#define sort_all(v) sort(v.begin(), v.end())
#define ya_sayed_ya_badawy \
ios_base::sync_with_stdio(false); \
cin.tie(NULL);
const int MAX = 4e5 + 50;
const int MAX_N = 1e5 + 50;
int MOD = 1e9 + 7;
const int OO = 1e18;
const double EPS = (double)1e-9;
int add(ll a, ll b)
{
return ((a % MOD) + (b % MOD)) % MOD;
}
int sub(ll a, ll b)
{
return ((a % MOD) - (b % MOD) + MOD) % MOD;
}
int mul(ll a, ll b)
{
return ((a % MOD) * (b % MOD)) % MOD;
}
int fp(ll base, ll pow)
{
if (pow == 0)
{
return 1;
}
ll res = fp(base, pow / 2);
if (pow % 2 == 0)
{
return mul(res, res);
}
return mul(base, mul(res, res));
}
int inv(ll up, ll down)
{
return mul(up, fp(down, MOD - 2));
}
string l, r;
int dp(int idx, bool exceeded_lower, bool below_upper, bool started, string res = "")
{
if (idx == (int)l.size())
{
return 1;
}
int start = (exceeded_lower) ? 0 : l[idx];
int end = (below_upper) ? 9 : r[idx];
int ret = 0;
for (char i = start; i <= end; i++)
{
bool new_exceed_lower = exceeded_lower || (i > l[idx]);
bool new_below_lower = below_upper || (i < r[idx]);
bool new_started = started || (i != '0');
ret += dp(idx + 1, new_exceed_lower, new_below_lower, new_started);
}
return ret;
}
string normalize_length(string s, int len)
{
return (string(len - (int)s.size(), '0') + s);
}
void solve()
{
cin >> l >> r;
int max_len = max(l.size(), r.size());
l = normalize_length(l, max_len);
r = normalize_length(r, max_len);
cout << dp(0, 0, 0, 0);
}
signed main()
{
ya_sayed_ya_badawy int t = 1;
cin >> t;
while (t--)
{
solve();
if (t != 0)
{
cout << endl;
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgdWxsIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIGYgZmlyc3QKI2RlZmluZSBpdGhfb3Agc2Vjb25kCiNkZWZpbmUgc29ydF9hbGwodikgc29ydCh2LmJlZ2luKCksIHYuZW5kKCkpCgojZGVmaW5lIHlhX3NheWVkX3lhX2JhZGF3eSAgICAgICAgICAgIFwKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBcCiAgICBjaW4udGllKE5VTEwpOwoKY29uc3QgaW50IE1BWCA9IDRlNSArIDUwOwpjb25zdCBpbnQgTUFYX04gPSAxZTUgKyA1MDsKaW50IE1PRCA9IDFlOSArIDc7CmNvbnN0IGludCBPTyA9IDFlMTg7CmNvbnN0IGRvdWJsZSBFUFMgPSAoZG91YmxlKTFlLTk7CgppbnQgYWRkKGxsIGEsIGxsIGIpCnsKICAgIHJldHVybiAoKGEgJSBNT0QpICsgKGIgJSBNT0QpKSAlIE1PRDsKfQoKaW50IHN1YihsbCBhLCBsbCBiKQp7CiAgICByZXR1cm4gKChhICUgTU9EKSAtIChiICUgTU9EKSArIE1PRCkgJSBNT0Q7Cn0KCmludCBtdWwobGwgYSwgbGwgYikKewogICAgcmV0dXJuICgoYSAlIE1PRCkgKiAoYiAlIE1PRCkpICUgTU9EOwp9CgppbnQgZnAobGwgYmFzZSwgbGwgcG93KQp7CiAgICBpZiAocG93ID09IDApCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgbGwgcmVzID0gZnAoYmFzZSwgcG93IC8gMik7CgogICAgaWYgKHBvdyAlIDIgPT0gMCkKICAgIHsKICAgICAgICByZXR1cm4gbXVsKHJlcywgcmVzKTsKICAgIH0KCiAgICByZXR1cm4gbXVsKGJhc2UsIG11bChyZXMsIHJlcykpOwp9CgppbnQgaW52KGxsIHVwLCBsbCBkb3duKQp7CiAgICByZXR1cm4gbXVsKHVwLCBmcChkb3duLCBNT0QgLSAyKSk7Cn0KCnN0cmluZyBsLCByOwoKaW50IGRwKGludCBpZHgsIGJvb2wgZXhjZWVkZWRfbG93ZXIsIGJvb2wgYmVsb3dfdXBwZXIsIGJvb2wgc3RhcnRlZCwgc3RyaW5nIHJlcyA9ICIiKQp7CgogICAgaWYgKGlkeCA9PSAoaW50KWwuc2l6ZSgpKQogICAgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGludCBzdGFydCA9IChleGNlZWRlZF9sb3dlcikgPyAwIDogbFtpZHhdOwogICAgaW50IGVuZCA9IChiZWxvd191cHBlcikgPyA5IDogcltpZHhdOwoKICAgIGludCByZXQgPSAwOwoKICAgIGZvciAoY2hhciBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspCiAgICB7CgogICAgICAgIGJvb2wgbmV3X2V4Y2VlZF9sb3dlciA9IGV4Y2VlZGVkX2xvd2VyIHx8IChpID4gbFtpZHhdKTsKICAgICAgICBib29sIG5ld19iZWxvd19sb3dlciA9IGJlbG93X3VwcGVyIHx8IChpIDwgcltpZHhdKTsKICAgICAgICBib29sIG5ld19zdGFydGVkID0gc3RhcnRlZCB8fCAoaSAhPSAnMCcpOwoKICAgICAgICByZXQgKz0gZHAoaWR4ICsgMSwgbmV3X2V4Y2VlZF9sb3dlciwgbmV3X2JlbG93X2xvd2VyLCBuZXdfc3RhcnRlZCk7CiAgICB9CgogICAgcmV0dXJuIHJldDsKfQoKc3RyaW5nIG5vcm1hbGl6ZV9sZW5ndGgoc3RyaW5nIHMsIGludCBsZW4pCnsKICAgIHJldHVybiAoc3RyaW5nKGxlbiAtIChpbnQpcy5zaXplKCksICcwJykgKyBzKTsKfQoKdm9pZCBzb2x2ZSgpCnsKCiAgICBjaW4gPj4gbCA+PiByOwoKICAgIGludCBtYXhfbGVuID0gbWF4KGwuc2l6ZSgpLCByLnNpemUoKSk7CiAgICBsID0gbm9ybWFsaXplX2xlbmd0aChsLCBtYXhfbGVuKTsKICAgIHIgPSBub3JtYWxpemVfbGVuZ3RoKHIsIG1heF9sZW4pOwoKICAgIGNvdXQgPDwgZHAoMCwgMCwgMCwgMCk7Cn0KCnNpZ25lZCBtYWluKCkKewogICAgeWFfc2F5ZWRfeWFfYmFkYXd5IGludCB0ID0gMTsKCiAgICBjaW4gPj4gdDsKCiAgICB3aGlsZSAodC0tKQogICAgewogICAgICAgIHNvbHZlKCk7CiAgICAgICAgaWYgKHQgIT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgZW5kbDsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQ==