f[a][b][c][d][e][f][g]:
a表示枚举到第i位(从高到低)
b表示是否有4
c表示是否有8
d表示连续几位(大于3默认为3)
e表示当前是什么数
f表示是否有连续3位
g=1表示当前数和询问的数字相同
g=0表示当前数比询问的数字小
#pragma GCC optimize(2)
#include<bits/stdc++.h>
#define LL long long
using namespace std;
LL f[15][2][2][5][15][2][2],l,r,a[15];
inline LL calc(LL n){
memset(f,0,sizeof(f));int tot=0;
while(n) a[++tot]=n%10,n/=10;
for(register int i=1;i<=a[tot];i++){
if(i==4) f[11][1][0][1][i][0][i==a[tot]]=1;
else if(i==8) f[11][0][1][1][i][0][i==a[tot]]=1;
else f[11][0][0][1][i][0][i==a[tot]]=1;
}
for(register int i=10;i;i--)
for(register int j=0;j<=9;j++){
for(register int k=0;k<=9;k++)
if(j!=k) if(j==4){
for(register int p=1;p<=2;p++)
for(register int q=0;q<2;q++){
if(j<a[i]) f[i][1][0][1][j][0][0]+=f[i+1][q][0][p][k][1][1];
f[i][1][0][1][j][0][0]+=f[i+1][q][0][p][k][0][0];
if(j==a[i]) f[i][1][0][1][j][0][1]+=f[i+1][q][0][p][k][1][1];
if(j<a[i]) f[i][1][0][1][j][1][0]+=f[i+1][q][0][p][k][1][1];
f[i][1][0][1][j][1][0]+=f[i+1][q][0][p][k][1][0];
if(j==a[i]) f[i][1][0][1][j][1][1]+=f[i+1][q][0][p][k][1][1];
}
if(j<a[i]) f[i][1][0][1][j][1][0]+=f[i+1][1][0][3][k][1][1];
f[i][1][0][1][j][1][0]+=f[i+1][1][0][3][k][1][0];
if(j==a[i]) f[i][1][0][1][j][1][1]+=f[i+1][1][0][3][k][1][1];
if(j<a[i]) f[i][1][0][1][j][1][0]+=f[i+1][0][0][3][k][1][1];
f[i][1][0][1][j][1][0]+=f[i+1][0][0][3][k][1][0];
if(j==a[i]) f[i][1][0][1][j][1][1]+=f[i+1][0][0][3][k][1][1];
}
else if(j==8){
for(register int p=1;p<=2;p++)
for(register int q=0;q<2;q++){
if(j<a[i]) f[i][0][1][1][j][0][0]+=f[i+1][0][q][p][k][0][1];
if(j==a[i]) f[i][0][1][1][j][0][1]+=f[i+1][0][q][p][k][0][1];
f[i][0][1][1][j][0][0]+=f[i+1][0][q][p][k][0][0];
if(j<a[i]) f[i][0][1][1][j][1][0]+=f[i+1][0][q][p][k][1][1];
if(j==a[i]) f[i][0][1][1][j][1][1]+=f[i+1][0][q][p][k][1][1];
f[i][0][1][1][j][1][0]+=f[i+1][0][q][p][k][1][0];
}
if(j<a[i]) f[i][0][1][1][j][1][0]+=f[i+1][0][0][3][k][1][1];
if(j==a[i]) f[i][0][1][1][j][1][1]+=f[i+1][0][0][3][k][1][1];
f[i][0][1][1][j][1][0]+=f[i+1][0][0][3][k][1][0];
if(j<a[i]) f[i][0][1][1][j][1][0]+=f[i+1][0][1][3][k][1][1];
if(j==a[i]) f[i][0][1][1][j][1][1]+=f[i+1][0][1][3][k][1][1];
f[i][0][1][1][j][1][0]+=f[i+1][0][1][3][k][1][0];
}
else{
if(j<a[i]) f[i][0][0][1][j][0][0]+=f[i+1][0][0][1][k][0][1];
if(j==a[i]) f[i][0][0][1][j][0][1]+=f[i+1][0][0][1][k][0][1];
f[i][0][0][1][j][0][0]+=f[i+1][0][0][1][k][0][0];
if(j<a[i]) f[i][0][0][1][j][0][0]+=f[i+1][0][0][2][k][0][1];
if(j==a[i]) f[i][0][0][1][j][0][1]+=f[i+1][0][0][2][k][0][1];
f[i][0][0][1][j][0][0]+=f[i+1][0][0][2][k][0][0];
if(j<a[i]) f[i][0][1][1][j][0][0]+=f[i+1][0][1][1][k][0][1];
if(j==a[i]) f[i][0][1][1][j][0][1]+=f[i+1][0][1][1][k][0][1];
f[i][0][1][1][j][0][0]+=f[i+1][0][1][1][k][0][0];
if(j<a[i]) f[i][0][1][1][j][0][0]+=f[i+1][0][1][2][k][0][1];
if(j==a[i]) f[i][0][1][1][j][0][1]+=f[i+1][0][1][2][k][0][1];
f[i][0][1][1][j][0][0]+=f[i+1][0][1][2][k][0][0];
if(j<a[i]) f[i][1][0][1][j][0][0]+=f[i+1][1][0][1][k][0][1];
if(j==a[i]) f[i][1][0][1][j][0][1]+=f[i+1][1][0][1][k][0][1];
f[i][1][0][1][j][0][0]+=f[i+1][1][0][1][k][0][0];
if(j<a[i]) f[i][1][0][1][j][0][0]+=f[i+1][1][0][2][k][0][1];
if(j==a[i]) f[i][1][0][1][j][0][1]+=f[i+1][1][0][2][k][0][1];
f[i][1][0][1][j][0][0]+=f[i+1][1][0][2][k][0][0];
if(j<a[i]) f[i][0][0][1][j][1][0]+=f[i+1][0][0][1][k][1][1];
if(j==a[i]) f[i][0][0][1][j][1][1]+=f[i+1][0][0][1][k][1][1];
f[i][0][0][1][j][1][0]+=f[i+1][0][0][1][k][1][0];
if(j<a[i]) f[i][0][0][1][j][1][0]+=f[i+1][0][0][2][k][1][1];
if(j==a[i]) f[i][0][0][1][j][1][1]+=f[i+1][0][0][2][k][1][1];
f[i][0][0][1][j][1][0]+=f[i+1][0][0][2][k][1][0];
if(j<a[i]) f[i][0][1][1][j][1][0]+=f[i+1][0][1][1][k][1][1];
if(j==a[i]) f[i][0][1][1][j][1][1]+=f[i+1][0][1][1][k][1][1];
f[i][0][1][1][j][1][0]+=f[i+1][0][1][1][k][1][0];
if(j<a[i]) f[i][0][1][1][j][1][0]+=f[i+1][0][1][2][k][1][1];
if(j==a[i]) f[i][0][1][1][j][1][1]+=f[i+1][0][1][2][k][1][1];
f[i][0][1][1][j][1][0]+=f[i+1][0][1][2][k][1][0];
if(j<a[i]) f[i][0][1][1][j][1][0]+=f[i+1][0][1][3][k][1][1];
if(j==a[i]) f[i][0][1][1][j][1][1]+=f[i+1][0][1][3][k][1][1];
f[i][0][1][1][j][1][0]+=f[i+1][0][1][3][k][1][0];
if(j<a[i]) f[i][1][0][1][j][1][0]+=f[i+1][1][0][1][k][1][1];
if(j==a[i]) f[i][1][0][1][j][1][1]+=f[i+1][1][0][1][k][1][1];
f[i][1][0][1][j][1][0]+=f[i+1][1][0][1][k][1][0];
if(j<a[i]) f[i][1][0][1][j][1][0]+=f[i+1][1][0][2][k][1][1];
if(j==a[i]) f[i][1][0][1][j][1][1]+=f[i+1][1][0][2][k][1][1];
f[i][1][0][1][j][1][0]+=f[i+1][1][0][2][k][1][0];
if(j<a[i]) f[i][1][0][1][j][1][0]+=f[i+1][1][0][3][k][1][1];
if(j==a[i]) f[i][1][0][1][j][1][1]+=f[i+1][1][0][3][k][1][1];
f[i][1][0][1][j][1][0]+=f[i+1][1][0][3][k][1][0];
}
if(j==4){
if(j<a[i]) f[i][1][0][2][j][0][0]+=f[i+1][1][0][1][j][0][1];
if(j==a[i]) f[i][1][0][2][j][0][1]+=f[i+1][1][0][1][j][0][1];
f[i][1][0][2][j][0][0]+=f[i+1][1][0][1][j][0][0];
if(j<a[i]) f[i][1][0][2][j][1][0]+=f[i+1][1][0][1][j][1][1];
if(j==a[i]) f[i][1][0][2][j][1][1]+=f[i+1][1][0][1][j][1][1];
f[i][1][0][2][j][1][0]+=f[i+1][1][0][1][j][1][0];
if(j<a[i]) f[i][1][0][3][j][1][0]+=f[i+1][1][0][2][j][0][1];
if(j==a[i]) f[i][1][0][3][j][1][1]+=f[i+1][1][0][2][j][0][1];
f[i][1][0][3][j][1][0]+=f[i+1][1][0][2][j][0][0];
if(j<a[i]) f[i][1][0][3][j][1][0]+=f[i+1][1][0][2][j][1][1];
if(j==a[i]) f[i][1][0][3][j][1][1]+=f[i+1][1][0][2][j][1][1];
f[i][1][0][3][j][1][0]+=f[i+1][1][0][2][j][1][0];
}
else if(j==8){
if(j<a[i]) f[i][0][1][2][j][0][0]+=f[i+1][0][1][1][j][0][1];
if(j==a[i]) f[i][0][1][2][j][0][1]+=f[i+1][0][1][1][j][0][1];
f[i][0][1][2][j][0][0]+=f[i+1][0][1][1][j][0][0];
if(j<a[i]) f[i][0][1][2][j][1][0]+=f[i+1][0][1][1][j][1][1];
if(j==a[i]) f[i][0][1][2][j][1][1]+=f[i+1][0][1][1][j][1][1];
f[i][0][1][2][j][1][0]+=f[i+1][0][1][1][j][1][0];
if(j<a[i]) f[i][0][1][3][j][1][0]+=f[i+1][0][1][2][j][0][1];
if(j==a[i]) f[i][0][1][3][j][1][1]+=f[i+1][0][1][2][j][0][1];
f[i][0][1][3][j][1][0]+=f[i+1][0][1][2][j][0][0];
if(j<a[i]) f[i][0][1][3][j][1][0]+=f[i+1][0][1][2][j][1][1];
if(j==a[i]) f[i][0][1][3][j][1][1]+=f[i+1][0][1][2][j][1][1];
f[i][0][1][3][j][1][0]+=f[i+1][0][1][2][j][1][0];
}
else{
if(j<a[i]) f[i][0][0][2][j][0][0]+=f[i+1][0][0][1][j][0][1];
if(j==a[i]) f[i][0][0][2][j][0][1]+=f[i+1][0][0][1][j][0][1];
f[i][0][0][2][j][0][0]+=f[i+1][0][0][1][j][0][0];
if(j<a[i]) f[i][0][0][2][j][1][0]+=f[i+1][0][0][1][j][1][1];
if(j==a[i]) f[i][0][0][2][j][1][1]+=f[i+1][0][0][1][j][1][1];
f[i][0][0][2][j][1][0]+=f[i+1][0][0][1][j][1][0];
if(j<a[i]) f[i][0][0][3][j][1][0]+=f[i+1][0][0][2][j][0][1];
if(j==a[i]) f[i][0][0][3][j][1][1]+=f[i+1][0][0][2][j][0][1];
f[i][0][0][3][j][1][0]+=f[i+1][0][0][2][j][0][0];
if(j<a[i]) f[i][0][0][3][j][1][0]+=f[i+1][0][0][2][j][1][1];
if(j==a[i]) f[i][0][0][3][j][1][1]+=f[i+1][0][0][2][j][1][1];
f[i][0][0][3][j][1][0]+=f[i+1][0][0][2][j][1][0];
if(j<a[i]) f[i][1][0][2][j][0][0]+=f[i+1][1][0][1][j][0][1];
if(j==a[i]) f[i][1][0][2][j][0][1]+=f[i+1][1][0][1][j][0][1];
f[i][1][0][2][j][0][0]+=f[i+1][1][0][1][j][0][0];
if(j<a[i]) f[i][1][0][2][j][1][0]+=f[i+1][1][0][1][j][1][1];
if(j==a[i]) f[i][1][0][2][j][1][1]+=f[i+1][1][0][1][j][1][1];
f[i][1][0][2][j][1][0]+=f[i+1][1][0][1][j][1][0];
if(j<a[i]) f[i][1][0][3][j][1][0]+=f[i+1][1][0][2][j][0][1];
if(j==a[i]) f[i][1][0][3][j][1][1]+=f[i+1][1][0][2][j][0][1];
f[i][1][0][3][j][1][0]+=f[i+1][1][0][2][j][0][0];
if(j<a[i]) f[i][1][0][3][j][1][0]+=f[i+1][1][0][2][j][1][1];
if(j==a[i]) f[i][1][0][3][j][1][1]+=f[i+1][1][0][2][j][1][1];
f[i][1][0][3][j][1][0]+=f[i+1][1][0][2][j][1][0];
if(j<a[i]) f[i][0][1][2][j][0][0]+=f[i+1][0][1][1][j][0][1];
if(j==a[i]) f[i][0][1][2][j][0][1]+=f[i+1][0][1][1][j][0][1];
f[i][0][1][2][j][0][0]+=f[i+1][0][1][1][j][0][0];
if(j<a[i]) f[i][0][1][2][j][1][0]+=f[i+1][0][1][1][j][1][1];
if(j==a[i]) f[i][0][1][2][j][1][1]+=f[i+1][0][1][1][j][1][1];
f[i][0][1][2][j][1][0]+=f[i+1][0][1][1][j][1][0];
if(j<a[i]) f[i][0][1][3][j][1][0]+=f[i+1][0][1][2][j][0][1];
if(j==a[i]) f[i][0][1][3][j][1][1]+=f[i+1][0][1][2][j][0][1];
f[i][0][1][3][j][1][0]+=f[i+1][0][1][2][j][0][0];
if(j<a[i]) f[i][0][1][3][j][1][0]+=f[i+1][0][1][2][j][1][1];
if(j==a[i]) f[i][0][1][3][j][1][1]+=f[i+1][0][1][2][j][1][1];
f[i][0][1][3][j][1][0]+=f[i+1][0][1][2][j][1][0];
}
}
LL ans=0;for(register int j=0;j<=9;j++)
for(register int k=1;k<=3;k++)
ans+=f[1][0][0][k][j][1][0]+f[1][0][0][k][j][1][1],
ans+=f[1][1][0][k][j][1][0]+f[1][1][0][k][j][1][1],
ans+=f[1][0][1][k][j][1][0]+f[1][0][1][k][j][1][1];return ans;
}
inline int read(){
int ret=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-') f=-f;ch=getchar();}
while(isdigit(ch)) ret=(ret<<1)+(ret<<3)+ch-'0',ch=getchar();
return ret*f;
}
int main(){
cin>>l>>r;cout<<calc(r)-calc(l-1);
return 0;
}