#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
#define MOD 1000000007
int TC;
char s[55];
char A[55] , B[55];
int len;
ll memo[51][18][18][18][2];
ll solve(int idx, int three, int six, int nine, bool isGreater) {
int mx = max( three , max( six , nine ) );
if( mx > 16 )
return 0;
if (idx == len)
return ( (three == six) && (six == nine) && (three != 0) && (!isGreater));
if ( ~memo[idx][three][six][nine][isGreater])
return memo[idx][three][six][nine][isGreater];
int cur = s[idx] - '0';
ll res = 0;
if (isGreater) {
for (int i = 0; i <= 9; i++) {
res += solve(idx + 1, three + (i == 3), six + (i == 6), nine + (i == 9), i >= cur);
res %= MOD;
}
} else {
for (int i = 0; i <= 9; i++) {
res += solve(idx + 1, three + (i == 3), six + (i == 6), nine + (i == 9), i > cur);
res %= MOD;
}
}
return memo[idx][three][six][nine][isGreater] = res;
}
bool check(){
int three = 0 , six = 0 , nine = 0;
for(int i=0;i<len;i++){
three += ( s[i] == '3' );
six += ( s[i] == '6' );
nine += ( s[i] == '9' );
}
return ( ( three == six ) && ( six == nine ) && ( three != 0 ) );
}
int main() {
#ifndef ONLINE_JUDGE
freopen("in.in", "r", stdin);
freopen("out.out", "w", stdout);
double startTime = clock();
#endif
scanf("%d", &TC);
while (TC--) {
scanf("%s %s" , &A , &B );
//
len = strlen( B );
for(int i=len-1;i>=0;i--)
s[len - 1 - i] = B[i];
memset(memo , -1 , sizeof memo);
ll right = solve( 0 , 0 , 0 , 0 , 0 ) % MOD;
//
len = strlen( A );
for(int i=len-1;i>=0;i--)
s[len - 1 - i] = A[i];
memset(memo , -1 , sizeof memo);
ll left = solve( 0 , 0 , 0 , 0 , 0 ) % MOD;
//
ll res = right - left;
res += check();
res = ( res + MOD + MOD ) % MOD;
printf("%lld\n" , res );
//
}
#ifndef ONLINE_JUDGE
cout << "Runtime is : " << (clock() - startTime) / CLOCKS_PER_SEC << '\n';
#endif
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdHlwZWRlZiBsb25nIGxvbmcgbGw7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKaW50IFRDOwpjaGFyIHNbNTVdOwpjaGFyIEFbNTVdICwgQls1NV07CmludCBsZW47CmxsIG1lbW9bNTFdWzE4XVsxOF1bMThdWzJdOwoKbGwgc29sdmUoaW50IGlkeCwgaW50IHRocmVlLCBpbnQgc2l4LCBpbnQgbmluZSwgYm9vbCBpc0dyZWF0ZXIpIHsKICAgIGludCBteCA9IG1heCggdGhyZWUgLCBtYXgoIHNpeCAsIG5pbmUgKSApOwogICAgaWYoIG14ID4gMTYgKQogICAgICAgIHJldHVybiAwOwogICAgaWYgKGlkeCA9PSBsZW4pCiAgICAgICAgcmV0dXJuICggKHRocmVlID09IHNpeCkgJiYgKHNpeCA9PSBuaW5lKSAmJiAodGhyZWUgIT0gMCkgJiYgKCFpc0dyZWF0ZXIpKTsKICAgIAogICAgaWYgKCB+bWVtb1tpZHhdW3RocmVlXVtzaXhdW25pbmVdW2lzR3JlYXRlcl0pCiAgICAgICAgcmV0dXJuIG1lbW9baWR4XVt0aHJlZV1bc2l4XVtuaW5lXVtpc0dyZWF0ZXJdOwogICAgCiAgICBpbnQgY3VyID0gc1tpZHhdIC0gJzAnOwogICAgbGwgcmVzID0gMDsKICAgIGlmIChpc0dyZWF0ZXIpIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSA5OyBpKyspIHsKICAgICAgICAgICAgcmVzICs9IHNvbHZlKGlkeCArIDEsIHRocmVlICsgKGkgPT0gMyksIHNpeCArIChpID09IDYpLCBuaW5lICsgKGkgPT0gOSksIGkgPj0gY3VyKTsKICAgICAgICAgICAgcmVzICU9IE1PRDsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IDk7IGkrKykgewogICAgICAgICAgICByZXMgKz0gc29sdmUoaWR4ICsgMSwgdGhyZWUgKyAoaSA9PSAzKSwgc2l4ICsgKGkgPT0gNiksIG5pbmUgKyAoaSA9PSA5KSwgaSA+IGN1cik7CiAgICAgICAgICAgIHJlcyAlPSBNT0Q7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG1lbW9baWR4XVt0aHJlZV1bc2l4XVtuaW5lXVtpc0dyZWF0ZXJdID0gcmVzOwp9Cgpib29sIGNoZWNrKCl7CiAgICBpbnQgdGhyZWUgPSAwICwgc2l4ID0gMCAsIG5pbmUgPSAwOwogICAgZm9yKGludCBpPTA7aTxsZW47aSsrKXsKICAgICAgICB0aHJlZSArPSAoIHNbaV0gPT0gJzMnICk7CiAgICAgICAgc2l4ICs9ICggc1tpXSA9PSAnNicgKTsKICAgICAgICBuaW5lICs9ICggc1tpXSA9PSAnOScgKTsKICAgIH0KICAgIHJldHVybiAoICggdGhyZWUgPT0gc2l4ICkgJiYgKCBzaXggPT0gbmluZSApICYmICggdGhyZWUgIT0gMCApICk7Cn0KCmludCBtYWluKCkgewojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiaW4uaW4iLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIm91dC5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICBkb3VibGUgc3RhcnRUaW1lID0gY2xvY2soKTsKI2VuZGlmCiAgICAKICAgIHNjYW5mKCIlZCIsICZUQyk7CiAgICB3aGlsZSAoVEMtLSkgewogICAgICAgIHNjYW5mKCIlcyAlcyIgLCAmQSAsICZCICk7CiAgICAgICAgLy8KICAgICAgICBsZW4gPSBzdHJsZW4oIEIgKTsKICAgICAgICBmb3IoaW50IGk9bGVuLTE7aT49MDtpLS0pCiAgICAgICAgICAgIHNbbGVuIC0gMSAtIGldID0gQltpXTsKICAgICAgICBtZW1zZXQobWVtbyAsIC0xICwgc2l6ZW9mIG1lbW8pOwogICAgICAgIGxsIHJpZ2h0ID0gc29sdmUoIDAgLCAwICwgMCAsIDAgLCAwICkgJSBNT0Q7CiAgICAgICAgLy8KICAgICAgICBsZW4gPSBzdHJsZW4oIEEgKTsKICAgICAgICBmb3IoaW50IGk9bGVuLTE7aT49MDtpLS0pCiAgICAgICAgICAgIHNbbGVuIC0gMSAtIGldID0gQVtpXTsKICAgICAgICBtZW1zZXQobWVtbyAsIC0xICwgc2l6ZW9mIG1lbW8pOwogICAgICAgIGxsIGxlZnQgPSBzb2x2ZSggMCAsIDAgLCAwICwgMCAsIDAgKSAlIE1PRDsKICAgICAgICAvLwogICAgICAgIGxsIHJlcyA9IHJpZ2h0IC0gbGVmdDsKICAgICAgICByZXMgKz0gY2hlY2soKTsKICAgICAgICByZXMgPSAoIHJlcyArIE1PRCArIE1PRCApICUgTU9EOwogICAgICAgIHByaW50ZigiJWxsZFxuIiAsIHJlcyApOwogICAgICAgIC8vCiAgICB9CgojaWZuZGVmIE9OTElORV9KVURHRQogICAgY291dCA8PCAiUnVudGltZSBpcyA6ICIgPDwgKGNsb2NrKCkgLSBzdGFydFRpbWUpIC8gQ0xPQ0tTX1BFUl9TRUMgPDwgJ1xuJzsKI2VuZGlmCn0=