/* 漂亮数定义:可以整除任意数位上的数 求出区间[l,r]之间的漂亮数个数 因为 dp[i][j][k]:i位前模lcm的值是j,i位前lcm是k的漂亮数个数 */ #include<bits/stdc++.h> using namespace std; #define ll long long ll dp[25][2600][60],has[2600],a[25],len,tot; void init(){//2520最多也就51个约数 for(int i=1;i<=2520;i++) if(2520%i==0)has[i]=++tot; } ll LCM(ll a,ll b){return a*b/__gcd(a,b);} ll dfs(ll pos,ll mod,ll lcm,ll lim){ if(pos==0)return mod%lcm==0; if(!lim && dp[pos][mod][has[lcm]]!=-1)return dp[pos][mod][has[lcm]]; ll res=0,num=lim?a[pos]:9; for(int i=0;i<=num;i++){ ll c_mod=(mod*10+i)%2520; ll c_lcm=lcm; if(i)c_lcm=LCM(lcm,i); res+=dfs(pos-1,c_mod,c_lcm,lim&&i==num); } if(!lim)dp[pos][mod][has[lcm]]=res; return res; } ll calc(ll x){ len=0; memset(a,0,sizeof a); while(x){ a[++len]=x%10; x/=10; } return dfs(len,0,1,1); } int main(){ init(); int t; cin>>t; memset(dp,-1,sizeof dp); while(t--){ ll A,B; cin>>A>>B; cout<<calc(B)-calc(A-1)<<endl; } }