1 #include <cstdio>
2 #include <cstring>
3 using namespace std;
4
5 int dp[10][3];
6 void getdp()
7 {
8 memset(dp,0,sizeof(dp));
9 dp[0][0]=1;
10 for(int i=1;i<=6;i++)
11 {
12 dp[i][0]=dp[i-1][0]*9-dp[i-1][1];
13 dp[i][1]=dp[i-1][0];
14 dp[i][2]=dp[i-1][2]*10+dp[i-1][0]+dp[i-1][1];
15 }
16 }
17 int f(int n)
18 {
19 int d[10],len=0;
20 for(int x=n;x;x/=10) d[len++]=x%10;
21 d[len]=0;
22 int ans=0;
23 bool flag=false;
24 for(int i=len-1;i>=0;i--)
25 {
26 ans+=dp[i][2]*d[i];
27 if(flag) {ans+=dp[i][0]*d[i]; continue;}
28 if(d[i]>4) ans+=dp[i][0];
29 if(d[i+1]==6 && d[i]>2) ans+=dp[i+1][1];
30 if(d[i]>6) ans+=dp[i][1];
31 if(d[i]==4 || (d[i+1]==6 && d[i]==2)) flag=true;
32 }
33 return n-ans;
34 }
35 int main()
36 {
37 getdp();
38 int n,m;
39 while(scanf("%d%d",&n,&m),n||m)
40 {
41 int ans=f(m+1)-f(n);
42 printf("%d\n",ans);
43 }
44 return 0;
45 }