#include <cstdio>
#include <cctype>
const int Digmax = 18;
const int Pmax = 20;
char dig[Digmax];
long long d[1 << Digmax][Pmax];
int main(void) {
freopen("ratphu.in", "r", stdin);
freopen("ratphu.out", "w", stdout);
int n = 0, p;
do {
dig[n++] = getchar();
} while (isdigit(dig[n - 1]));
n--;
scanf("%d", &p);
for (int i = 1; i < (1 << n); i++) {
if (!(i & (i - 1))) {
d[i][(dig[31 - __builtin_clz(i)] - '0') % p] = 1LL;
} else {
for (int j = 0; j < n; j++) {
if ((i >> j) & 1) {
for (int r = 0; r < p; r++) {
d[i][(r * 10 + dig[j] - '0') % p] += d[i ^ (1 << j)][r];
}
}
}
}
}
printf("%lld\n", d[(1 << n) - 1][0]);
return 0;
}