CF55D
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int mod=2520;
int t,b[mod+1];
long long f[25][mod+1][50],l,r;
vector<int>number;
void init()
{
memset(f,-1,sizeof(f));
int num=0;
for(int i=1;i<=mod;i++)if(mod%i==0)b[i]=++num;
}
inline int gcd (int x,int y)
{
if(x>y) swap(x,y);
if(y%x==0) return x;
return gcd(x,y%x);
}
int _lcm(int x,int y)
{
return x*y/gcd(x,y);
}
long long dfs(int pos,int num_mod,int lcm,int sp)
{
if(pos==-1)return num_mod%lcm==0;
if(!sp&&f[pos][num_mod][b[lcm]]!=-1)return f[pos][num_mod][b[lcm]];
int ans=0;
int maxn=sp==1?number[pos]:9;
for(int i=0;i<=maxn;i++)
{
int nex_num_mod=(num_mod*10+i)%mod;
int nex_lcm=lcm;
if(i)nex_lcm=_lcm(nex_lcm,i);
ans+=dfs(pos-1,nex_num_mod,nex_lcm,sp&&i==maxn) ;
}
if(sp==0)f[pos][num_mod][b[lcm]]=ans;
return ans;
}
long long calc(long long x)
{
number.clear();
while(x)
{
number.push_back(x%10);
x/=10;
}
return dfs(number.size()-1,0,1,1);
}
int main()
{
init();
cin>>t;
while(t--)
{
cin>>l>>r;
cout<<calc(r)-calc(l-1)<<endl;
}
return 0;
}