#include<cstdio>
#include<cctype>
#include<queue>
#include<cstring>
#include<algorithm>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
#define ren for(int i=first[x];i;i=next[i])
using namespace std;
typedef long long ll;
ll f[15][3][10][2][2][2][2];
//f[i][cur][j][is8][is4][isok][=/<]
int bit[15],len;
ll solve(ll n) {
ll ans=0;
if(n==99999999999ll+1) ans++,n--;
memset(f,0,sizeof(f));len=0;
while(n) bit[++len]=n%10,n/=10;
rep(i,1,bit[len]) f[len][1][i][i==8][i==4][0][i<bit[len]]=1;
dwn(i,len-1,1) rep(cur,1,2) rep(j,0,9) rep(is8,0,1) rep(is4,0,1) rep(isok,0,1) rep(c,0,1) {
ll& ans=f[i+1][cur][j][is8][is4][isok][c];
if(ans) {
rep(k,0,(c?9:bit[i])) {
if(k==j&&cur==2&&!isok) f[i][1][k][is8|(k==8)][is4|(k==4)][1][c|(k<bit[i])]+=ans;
else if(k==j&&!isok) f[i][cur+1][k][is8|(k==8)][is4|(k==4)][isok][c|(k<bit[i])]+=ans;
else f[i][1][k][is8|(k==8)][is4|(k==4)][isok][c|(k<bit[i])]+=ans;
}
}
}
rep(j,0,9) rep(is8,0,1) rep(is4,0,1) if(is8+is4<=1) ans+=f[1][1][j][is8][is4][1][1];
return ans;
}
int main() {
ll l,r;scanf("%lld%lld",&l,&r);
printf("%lld\n",solve(r+1)-solve(l));
return 0;
}