只有10pts
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll MOD=1e9+7;
ll upp[1005],dp[1005][13][13];
// apr_0:之前有没有出现过非0数,lst1:上上个数,lst2:上个数
ll dfs(ll p,ll lst1,ll lst2,bool op,bool apr_0,bool limit){
if(p<=0)return op;
if(!limit&&dp[p][lst1][lst2]!=-1)return dp[p][lst1][lst2];
ll upper=limit?upp[p]:9,res=0;
for(ll i=0;i<=upper;i++)
(res+=dfs(p-1,lst2,(!(apr_0||i!=0)?10:i),op||(i==lst1)||(i==lst2),apr_0||(i!=0),limit&&(i==upp[p])))%MOD;
if(!limit)dp[p][lst1][lst2]=res;
return res;
}
ll work(string s){
ll tot=0;
for(ll i=s.size()-1;i>=0;i--)upp[++tot]=(ll)(s[i]-'0');
if(upp[tot]==0)tot--;
// cout<<"upp : ";for(ll i=tot;i>=1;i--)cout<<upp[i]<<" ";cout<<endl;
memset(dp,-1,sizeof(dp));
return dfs(tot,10,10,false,false,true);
}
signed main(){
ios::sync_with_stdio(false);
string a,b;cin>>a>>b;
a[a.size()-1]--;
ll asd=a.size()-1;
while(a[asd]<'0'){
a[asd]='9';
a[--asd]--;
}
// cout<<"a = "<<a<<" b = "<<b<<endl;
cout<<(((work(b)-work(a))%MOD)+MOD)%MOD;
return 0;
}