#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:128777216")
const int null = 0;
using namespace std;
template <class T>
int size(const T &a) {
  return int(a.size());
}
template <class T>
T abs(const T &a) {
  return (a < 0 ? -a : a);
}
template <class T>
T sqr(const T &a) {
  return a * a;
}
char s[1000000];
int d[11];
bool was[10];
int main() {
  scanf("%s", s);
  int vars = 10;
  for (int i = 0; s[i]; i++) {
    if (s[i] == '?') {
      if (i == 0) {
        d[9]++;
      } else {
        d[10]++;
      }
    } else if ('A' <= s[i] && s[i] <= 'J') {
      int c = s[i] - 'A';
      if (!was[c]) {
        was[c] = true;
        if (i == 0) {
          d[9]++;
        } else {
          d[vars]++;
        }
        vars--;
      }
    }
  }
  long long res = 1;
  for (int i = 2; i <= 9; i++) {
    for (int j = 0; j < d[i]; j++) {
      res *= i;
    }
  }
  cout << res;
  for (int i = 0; i < d[10]; i++) {
    printf("0");
  }
  printf("\n");
  return 0;
}
