1 #include <cstdio>
2 #include <cstring>
3
4 int dp[10][3], bit[10];
5
6 void init()
7 {
8
9 dp[1][0] = 9; dp[1][1] = 1; dp[1][2] = 1;
10 for(int i=2; 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][0] + dp[i-1][1] + dp[i-1][2] * 10;
15 }
16 }
17
18 int solve(int n)
19 {
20 memset(bit, 0, sizeof(bit));
21 int len = 0;
22 while(n>0)
23 {
24 bit[++len] = n%10;
25 n /= 10;
26 }
27 bit[len+1] = 0;
28 int ret = 0, flag = 0;
29 for(int i=len; i>=2; i--)
30 {
31 ret += dp[i-1][2] * bit[i];
32 if(flag==1)
33 ret += dp[i-1][0] * bit[i];
34 if(flag==0 && bit[i]>4)
35 ret += dp[i-1][0];
36 if(flag==0 && bit[i+1]==6 && bit[i]>2)
37 ret += dp[i][1];
38 if(flag==0 && bit[i]>6)
39 ret += dp[i-1][1];
40 if(bit[i]==4 || bit[i]==2 && bit[i+1]==6)
41 flag = 1;
42 }
43 if(flag==1) ret += bit[1] + 1;
44 if(flag==0 && bit[1]>=4) ret++;
45 if(flag==0 && bit[1]>=2 && bit[2]==6) ret++;
46 return ret;
47 }
48
49 int main()
50 {
51 int l, r;
52 init();
53 /*
54 for(int i=1; i<=6; i++)
55 {
56 for(int j=0; j<=2; j++)
57 printf("%d ",dp[i][j]);
58 printf("\n");
59 }
60 */
61 while(scanf("%d%d",&l,&r)!=EOF)
62 {
63 if(l==0 && r==0) break;
64
65 if(l>r)
66 {
67 int temp;
68 temp = l; l = r; r = temp;
69 }
70 int ans = solve(r) - solve(l-1);
71 //printf("%d %d %d\n",solve(l),solve(r),ans);
72 printf("%d\n",r-l+1-ans);
73 }
74 return 0;
75 }