#include <iostream>
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
string a,b;
int m, d;
int n;
ll M = 1e9 + 7;
const int N = 2e3 + 5;
ll dp[N][N][2][2];
ll solve(int i, int sum, int nz, int pos, int ucan, int lcan ){
if(i < 0 && sum == 0) return 1ll;
else if(i < 0) return 0ll;
if(~dp[i][sum][nz][pos] && ucan && lcan) return dp[i][sum][nz][pos];
int ub = b[n - 1 - i] - '0';
int lb = a[n - 1 - i] - '0';
int kub = (ucan)? 9: ub; int klb = (lcan)?0:lb;
ll ans = 0ll;
for(int dig = klb; dig <= kub; dig++){
int zer = (nz && (dig == 0));
int ns = (sum*10 + dig)%m;
if(zer) ans = (ans + solve(i - 1,ns, zer, pos, ucan||(dig < ub), lcan||(dig>lb)) )%M;
else{
if(pos && dig != d)
ans = (ans + solve(i-1,ns,zer,pos^1,ucan||(dig < ub), lcan||(dig>lb)))%M;
else if(!pos && dig == d)
ans = (ans + solve(i-1,ns,zer,pos^1,ucan||(dig < ub), lcan||(dig>lb)))%M;
}
}
if(ucan && lcan) return dp[i][sum][nz][pos]= ans;
else return ans;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
memset(dp, - 1, sizeof(dp));
cin>>m>>d;
cin>>a>>b;
n = a.size();
cout<<solve(n - 1, 0,1,1,0,0)<<"\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4gCnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RyaW5nIGEsYjsgCmludCBtLCBkOyAKaW50IG47IApsbCBNID0gMWU5ICsgNzsgCmNvbnN0IGludCBOID0gMmUzICsgNTsgCgpsbCBkcFtOXVtOXVsyXVsyXTsgCgpsbCBzb2x2ZShpbnQgaSwgaW50IHN1bSwgaW50IG56LCBpbnQgcG9zLCBpbnQgdWNhbiwgaW50IGxjYW4gKXsKCiAgICAgaWYoaSA8IDAgJiYgc3VtID09IDApIHJldHVybiAxbGw7IAogICAgIGVsc2UgaWYoaSA8IDApIHJldHVybiAwbGw7IAoKICAgICBpZih+ZHBbaV1bc3VtXVtuel1bcG9zXSAmJiB1Y2FuICYmIGxjYW4pIHJldHVybiBkcFtpXVtzdW1dW256XVtwb3NdOyAKICAgICBpbnQgdWIgPSBiW24gLSAxIC0gaV0gLSAnMCc7IAogICAgIGludCBsYiAgPSBhW24gLSAxIC0gaV0gLSAnMCc7IAogICAgIGludCBrdWIgPSAodWNhbik/IDk6IHViOyBpbnQga2xiID0gKGxjYW4pPzA6bGI7IAogICAgIGxsIGFucyA9IDBsbDsgCgogICAgZm9yKGludCBkaWcgPSBrbGI7IGRpZyA8PSBrdWI7IGRpZysrKXsKICAgICAgICBpbnQgemVyID0gKG56ICYmIChkaWcgPT0gMCkpOyAKICAgICAgICBpbnQgbnMgPSAoc3VtKjEwICsgZGlnKSVtOyAKICAgICAgICBpZih6ZXIpIGFucyA9IChhbnMgKyBzb2x2ZShpIC0gMSxucywgemVyLCBwb3MsIHVjYW58fChkaWcgPCB1YiksIGxjYW58fChkaWc+bGIpKSApJU07IAogICAgICAgIGVsc2V7CiAgICAgICAgICAgICBpZihwb3MgJiYgZGlnICE9IGQpCiAgICAgIGFucyA9IChhbnMgKyBzb2x2ZShpLTEsbnMsemVyLHBvc14xLHVjYW58fChkaWcgPCB1YiksIGxjYW58fChkaWc+bGIpKSklTTsgCiAgICAgICAgICAgICBlbHNlIGlmKCFwb3MgJiYgZGlnID09IGQpIAphbnMgPSAoYW5zICsgc29sdmUoaS0xLG5zLHplcixwb3NeMSx1Y2FufHwoZGlnIDwgdWIpLCBsY2FufHwoZGlnPmxiKSkpJU07IAogICAgICAgICB9CiAgICB9CiAgICBpZih1Y2FuICYmIGxjYW4pIHJldHVybiBkcFtpXVtzdW1dW256XVtwb3NdPSBhbnM7IAogICAgZWxzZSByZXR1cm4gYW5zOyAKfQoKaW50IG1haW4oKSB7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCiAgICBjaW4udGllKE5VTEwpOyBjb3V0LnRpZShOVUxMKTsgCiAgICBtZW1zZXQoZHAsIC0gMSwgc2l6ZW9mKGRwKSk7IAogICAgY2luPj5tPj5kOyAKICAgIGNpbj4+YT4+YjsgCiAgICBuID0gYS5zaXplKCk7IAogICBjb3V0PDxzb2x2ZShuIC0gMSwgMCwxLDEsMCwwKTw8IlxuIjsgCgp9