#include<bits/stdc++.h>
#define db double
#define pb push_back
#define eb emplace_back
#define fi first
#define se second
#define mkp make_pair
#define pii pair<int,int>
using namespace std;
bool MBE;
inline int read(){
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-f;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}
int a[21],dp[21][2010];
int dfs(int pos,int s,int be,int tp){
if(!pos)return __builtin_popcount(s&(s^1))<=3;
if(!be&&!tp&&dp[pos][s]!=-1)return dp[pos][s];
int mx=tp?a[pos]:9,res=0;
for(int i=0;i<=mx;i++){
res+=dfs(pos-1,(be&&!i)?0:(s|(1<<i)),be&&!i,tp&&(i==mx));
}
if(!be&&!tp)dp[pos][s]=res;
return res;
}
int query(int x){
int cnt=0;
while(x){
a[++cnt]=x%10;
x/=10;
}
return dfs(cnt,0,1,1);
}
signed main(){
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
int T=read();
memset(dp,-1,sizeof dp);
while(T--){
int l=read(),r=read();
printf("%lld\n",query(r)-query(l-1));
}
bool MED;
cerr<<(&MED-&MBE)/1048576.0<<" MB, "<<1000*clock()/CLOCKS_PER_SEC<<" ms\n";
return 0;
}