#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T min(T &a, T &b) {
  return a < b ? a : b;
}
template <class T>
inline T max(T &a, T &b) {
  return a > b ? a : b;
}
template <class T>
void read(T &x) {
  char ch;
  while ((ch = getchar()) && !isdigit(ch))
    ;
  x = ch - '0';
  while ((ch = getchar()) && isdigit(ch)) x = x * 10 + ch - '0';
}
struct point {
  int x, y;
  point() {}
  point(int _x, int _y) : x(_x), y(_y) {}
};
const unsigned int Mod = (unsigned int)4294967296;
const int N = 120000;
int n, Gs;
unsigned int f[N];
char s[N];
int main() {
  scanf("%d%s", &n, s + 1);
  if (n & 1) {
    puts("0");
    return 0;
  }
  for (int i = 1; i <= n; i++) Gs += s[i] != '?';
  if (Gs > n / 2) {
    puts("0");
    return 0;
  }
  f[0] = 1;
  for (int _ = 1; _ <= n; _++) {
    if (s[_] == '?') {
      long long c = f[1];
      for (int i = 2 - (_ & 1); i <= min(_, n / 2); i += 2)
        f[i] = f[i - 1] + f[i + 1];
      f[0] = c;
    } else {
      for (int i = min(_, n / 2); i >= 1; i--) f[i] = f[i - 1];
      f[0] = 0;
    }
  }
  unsigned int ans = f[0];
  for (int i = 1; i <= n / 2 - Gs; i++) ans = ans * 25;
  printf("%u\n", ans);
}
