#include <cstdio>
#define NMAX 19
using namespace std;
int nc = 0, n, p, v[NMAX], matr[1 << NMAX][NMAX], lim;
void citeste()
{
FILE *f = fopen("ratphu.in", "r");
fscanf(f, "%i%i", &n, &p);
fclose(f);
while (n)
{
v[nc++] = n % 10;
n /= 10;
}
lim = 1 << nc;
}
void parcurge()
{
matr[0][0] = 1;
for (int i = 0; i < lim; ++i)
for (int j = 0; j < nc; ++j)
if ((i & (1 << j)) == 0)
for (int k = 0; k < p; ++k)
matr[i | (1 << j)][(k * 10 + v[j]) % p] += matr[i][k];
}
void afiseaza()
{
FILE *f = fopen("ratphu.out", "w");
fprintf(f, "%i", matr[lim-1][0]);
fclose(f);
}
int main()
{
citeste();
parcurge();
afiseaza();
}