https://loj.ac/submission/544712
#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <vector>
#define ll long long
using namespace std;
int f[100][100],ans,a,b;
long long power[100];
void pre(){
power[0]=1;
for(int i=1;i<=12;i++) power[i]=power[i-1]*10;
for(int i=0;i<=9;i++) f[1][i]=1;
for(int i=2;i<=11;i++)
for(int j=0;j<=9;j++)
for(int k=0;k<=9;k++)
if(abs(j-k)>=2) f[i][j]+=f[i-1][k];
}
int work(int x){
int w=0,ans=0;
while(power[w]<=x) ++w;
for(int i=1;i<w;i++)
for(int j=1;j<=9;j++)
ans+=f[i][j];
int y=x/power[w-1];
for(int i=1;i<y;i++) ans+=f[w][i];
int pp=y;x%=power[w-1];
for(int i=w-1;i>=1;i--){
y=x/power[i-1];
for(int j=0;j<y;j++)
if(abs(j-pp)>=2) ans+=f[i][j];
if(abs(pp-y)<2) break;
pp=y;x%=power[i-1];
}
return ans;
}
int main(){
while(cin>>a>>b) {pre();printf("%d\n",work(b+1)-work(a));}
return 0;
}