#include <bits/stdc++.h>
using namespace std;
inline bool isLower(char c) { return c >= 'a' && c <= 'z'; }
inline bool isUpper(char c) { return c >= 'A' && c <= 'Z'; }
int n, cnt;
char s[100005];
unsigned int dpa[2][50005];
unsigned int fpow(unsigned int x, int y) {
  if (y == 0) return 1;
  unsigned int res = fpow(x, y / 2);
  return y % 2 == 1 ? res * res * x : res * res;
}
int main() {
  scanf("%d %s", &n, s);
  dpa[1][0] = 1;
  for (int i = 0; i < n; i++) cnt += s[i] != '?';
  if (cnt > n / 2) {
    printf("%d\n", 0);
    return 0;
  }
  for (int i = 0; i < n; i++) {
    int p = i & 1;
    int mx = min(i + 1, n - i - 1);
    if (s[i] == '?') {
      dpa[p][0] = dpa[p ^ 1][1];
      for (int j = 1; j <= mx; j++) {
        dpa[p][j + 0] = dpa[p ^ 1][j - 1 + 0] + dpa[p ^ 1][j + 1 + 0];
      }
    } else {
      dpa[p][0] = 0;
      for (int j = 1; j <= mx; j++) {
        dpa[p][j + 0] = dpa[p ^ 1][j - 1 + 0];
      }
    }
  }
  printf("%u\n", dpa[(n - 1) & 1][0] * fpow(25, n / 2 - cnt));
  return 0;
}
