#include <bits/stdc++.h>
using namespace std;
const int maxn = 1 << 18;
const int maxm = 1e6 + 10;
const int INF = 0x3f3f3f3f;
long long casn, n, m, k;
long long dp[maxn][100];
int num[123];
int tms[123];
int len;
long long pw[123];
int main() {
  int a, b, c;
  cin >> n >> m;
  long long x = n;
  while (x) {
    num[len++] = x % 10;
    tms[x % 10]++;
    x /= 10;
  }
  sort(num, num + len);
  pw[0] = 1;
  for (int i = 1; i < 20; i++) pw[i] = pw[i - 1] * i;
  for (int i = 0; i < len; i++)
    if (num[i]) dp[1 << i][num[i] % m] = 1;
  for (int i = 1; i < (1 << len); i++)
    for (int j = 0; j < len; j++)
      if (i & (1 << j))
        for (int k = 0; k < m; k++)
          dp[i][(k * 10 + num[j]) % m] += dp[i ^ (1 << j)][k];
  for (int i = 0; i < 10; i++) dp[(1 << len) - 1][0] /= pw[tms[i]];
  cout << dp[(1 << len) - 1][0] << endl;
  return 0;
}
