#include <bits/stdc++.h>
using namespace std;
int num[20];
long long dp[20][2522][49];
int __lcm(int a, int b){
return a/__gcd(a, b)*b;
}
int Index[2522];
void init(){
int te = 1;
for(int i=1; i<=2520; i++)
if(2520%i == 0)
Index[i] = te++;
}
long long dfs(int i, int p, int lcm, bool e) {
if (i==-1) return p%lcm == 0;
if (!e && ~dp[i][p][Index[lcm]]) return dp[i][p][Index[lcm]];
long long res = 0;
int u = e?num[i]:9;
for (int d = 0; d <= u; ++d){
int nowlcm = lcm;
if(d) nowlcm = __lcm(nowlcm, d);
res += dfs(i-1, (p*10+d)%2520, nowlcm,e&&d==u);
}
return e?res:dp[i][p][Index[lcm]] = res;
}
long long solve(long long x){
int t = 0;
while(x){
num[t++] = x%10;
x /= 10;
}
return dfs(t-1, 0, 1, true);
}
int main(){
int T;
cin>>T;
init();
memset(dp, -1, sizeof(dp));
while(T--){
long long a,b;
cin>>a>>b;
cout<<solve(b) - solve(a-1)<<endl;
}
return 0;
}