#include <bits/stdc++.h>
using namespace std;
long long n, m;
long long dp[1 << 18][110];
vector<int> digits;
long long solve(int mask, int k) {
  long long res = 0;
  int p = digits.size() - 1 - __builtin_popcount(mask);
  if (p < 0) return k == 0;
  if (dp[mask][k] != -1) return dp[mask][k];
  long long mult = pow(10LL, p);
  mult %= m;
  for (int i = 0; i < digits.size(); i++) {
    if (mask & (1 << i)) continue;
    if (p == digits.size() - 1 && digits[i] == 0) continue;
    if (i > 0 && !(1 << i - 1 & mask) && digits[i] == digits[i - 1]) continue;
    long long r = (k + mult * digits[i]) % m;
    res += solve(mask | (1 << i), r);
  }
  return dp[mask][k] = res;
}
int main() {
  cin >> n >> m;
  long long aux = n;
  while (aux > 0) {
    digits.push_back(aux % 10);
    aux /= 10;
  }
  sort(digits.begin(), digits.end());
  memset(dp, -1, sizeof(dp));
  cout << solve(0, 0) << endl;
  return 0;
}
