#include<stdio.h> long long int n,m; long long int a[10][10]={0},t[12]={0,1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000,10000000000};//a[i][j]表示开头是j的i位数 void dp() { int i,j,k,l; for(i=0;i<10;i++) a[1][i]=1; a[1][4]=0; for(i=2;i<9;i++) { for(j=0;j<10;j++) { if(j==4) continue; for(k=0;k<10;k++) { if((j==6)&&(k==2)) continue; else a[i][j]+=a[i-1][k]; } } } } long long int find(long long int n) { long long int ans=0; int i,j,k=0,l,num,last; while(n>=t[k]) k++; k--; for(i=1;i<k;i++) { for(j=1;j<10;j++) { ans+=a[i][j]; } } num=n/t[k]; for(i=1;i<num;i++) { if(i==4) continue; else ans+=a[k][i]; } n%=t[k]; last=num; if(num!=4) { for(i=k-1;i>0;i--) { num=n/t[i]; for(j=0;j<num;j++) { if((last==6)&&(j==2)) continue; else if(j==4) continue; else ans+=a[i][j]; } if((last==6)&&(num==2)) break; if(num==4) break; last=num; n%=t[i]; } } return ans; } int main() { dp(); int i,j,k,l; while(scanf("%lld %lld",&n,&m)!=EOF) { if((n==0)&&(m==0)) break; printf("%lld\n",find(m+1)-find(n)); } }