ll dfs(int pos,int pre,bool sta,bool limit) { if (pos==-1) return 1; if (!limit&&dp[pos][sta]!=-1) return dp[pos][sta]; int up = limit?a[pos]:9; ll ans = 0; for (int i = 0 ; i <= up ; i ++) { if (pre==6&&i==2) continue; if (i==4) continue; ans += dfs(pos-1,i,i==6,limit&&i==pos[a]); } if (!limit) dp[pos][sta] = ans; return ans; }
ll solve(ll n) { pos = 0; while (n) { a[pos++] = n%10; n /= 10; } return dfs(pos-1,0,false,true); }
int main() { int n,m; memset(dp,-1,sizeof(dp)); while (~scanf("%d%d",&n,&m)&&(n||m)) { if (n>m) { n = n^m; m = n^m; n = n^m; } printf("%lld\n",solve(m)-solve(n-1)); } }