#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; }