#include using namespace std; const long long mod = 1e9 + 7; long long dp0[20000][2], dp1[20000][2]; int main() { string S; int M; cin >> S >> M; long long ans = 0; if (count(S.begin(), S.end(), '0') >= 1) ans++; for (int i = 0; i < S.size(); i++) { memset(dp1, 0, sizeof(dp1)); if (S[i] != '0') (dp1[(S[i] - '0') % M][0] += 1) %= mod; for (int j = 0; j < M; j++) { (dp1[(j * 10) % M][1] += dp0[j][0] + dp0[j][1]) %= mod; (dp1[(j * 10 + S[i] - '0') % M][0] += dp0[j][0] + dp0[j][1]) %= mod; } swap(dp0, dp1); (ans += dp0[0][0]) %= mod; } cout << ans << endl; }