#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using std::cin;using std::cout;
constexpr long long mod=1000000007;
int m,d;
long long f[2001][2000];
std::string l,r;
inline long long dfs(int id,int sum,const std::string&s,bool tag,int len){
if(id>len) return !sum;
if(!tag&&~f[id][sum]) return f[id][sum];
int top=tag?(s[id-1]^48):9;
long long ans=0;
if(id&1){
for(int i=0;i<=top;++i)
if(i!=d)
ans=(ans+dfs(id+1,(sum*10+i)%m,s,tag&&(i==top),len))%mod;
}else if(d<=top) ans=dfs(id+1,(sum*10+d)%m,s,tag&&(d==top),len)%mod;
if(!tag) f[id][sum]=ans;
return ans;
}
inline long long divide(std::string s){
return dfs(1,0,s,1,s.size());
}
inline bool check(std::string s){
int len=s.size(),sum=0;
for(int i=0;i<len;++i){
if(i&1) if((s[i]^48)!=d) return 0;
else if((s[i]^48)==d) return 0;
sum=(sum*10+(s[i]^48))%m;
}
return !sum;
}
signed main(){
std::ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
cin>>m>>d>>l>>r;
int down=r.size();
for(int i=1;i<=down;++i)
for(int j=0;j<=9;++j)
f[i][j]=-1;
cout<<((divide(r)-divide(l)+check(l))%mod+mod)%mod;
return 0;
}