#include <bits/stdc++.h>
using namespace std;
long long powr(long long m, long long n) {
  if (m == 1) return 1;
  if (n == 0) return 1;
  if (n == 1) return m % 1000000007;
  if (n % 2) {
    long long te = powr(m, n / 2);
    return (((te * te) % 1000000007) * (m % 1000000007)) % 1000000007;
  } else {
    long long te = powr(m, n / 2);
    return (te * te) % 1000000007;
  }
}
vector<int> v;
int cnt[15];
long long ans;
long long fact[20];
void gen(int k) {
  if (k == 10) {
    int totall = 0;
    for (int i = 0; i < v.size(); i++) {
      totall += v[i];
    }
    if (!cnt[0]) {
      long long tmp = fact[totall];
      for (int j = 0; j < v.size(); j++) tmp /= fact[v[j]];
      ans += tmp;
    }
    for (int i = 1; i <= cnt[0]; i++) {
      int total = i + totall;
      long long tmp = fact[total];
      for (int j = 0; j < v.size(); j++) tmp /= fact[v[j]];
      tmp /= fact[i];
      long long tmp2 = 0LL;
      tmp2 = fact[total - 1];
      for (int j = 0; j < v.size(); j++) tmp2 /= fact[v[j]];
      tmp2 /= fact[i - 1];
      ans += (tmp - tmp2);
    }
  } else {
    if (cnt[k] == 0) gen(k + 1);
    for (int i = 1; i <= cnt[k]; i++) {
      v.push_back(i);
      gen(k + 1);
      v.pop_back();
    }
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int tc = 1;
  int cs = 0;
  while (tc--) {
    string s;
    cin >> s;
    for (int i = 0; i < s.size(); i++) {
      cnt[s[i] - '0']++;
    }
    fact[0] = 1;
    for (long long i = 1; i < 20; i++) fact[i] = i * fact[i - 1];
    gen(1);
    cout << ans;
  }
}
