#include<bits/stdc++.h>
using namespace std;
int dp[11][10],n,m;
void init(){//dp[i][j]:i位的数,最高位是j
dp[0][0]=1;
for(int i=1;i<=7;i++)
for(int j=0;j<10;j++)
for(int k=0;k<10;k++)
if(j!=4 && !(j==6 && k==2))
dp[i][j]+=dp[i-1][k];
}
int solve(int n){//求[0,n)范围合法的个数
int res=0,len=0,d[11]={};
while(n)d[++len]=n%10,n/=10;
d[len+1]=0;
for(int i=len;i>=1;i--){//从高到低枚举每位
for(int j=0;j<d[i];++j)//枚举最高位的数
if(d[i+1]!=6 || j!=2)
res+=dp[i][j];
if(d[i]==4 || d[i+1]==6 && d[i]==2)break;//后面的都不用枚举了
}
return res;
}
int main(){
init();
while(cin>>n>>m,m)cout<<solve(m+1)-solve(n)<<endl;
}