#include <bits/stdc++.h>   using namespace std;   long long dp[1 << 18][100], d, f[20];   int main() {     int m, l, n, i, j, k, c[10];     char a[20];     memset(c, 0, sizeof(c));     for (f[0] = 1, i = 1; i < 20; i++) f[i] = f[i - 1] * i;     scanf( %s%d , a, &m);     l = strlen(a), n = 1 << l;     for (i = 0; i < l; i++) c[a[i] -=  0 ]++;     for (d = 1, i = 0; i < 10; i++) d *= f[c[i]];     dp[0][0] = 1;     for (i = 0; i < n; i++)       for (j = 0; j < l; j++)         if (!(i & 1 << j))           for (k = 0; k < m; k++)             if (!(i == 0 && a[j] == 0))               dp[i | 1 << j][(k * 10 + a[j]) % m] += dp[i][k];     printf( %I64d n , dp[n - 1][0] / d);     return 0;   }   