//#include #include using namespace std; #include using namespace atcoder; using mint = modint1000000007; typedef long long ll; #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() const int MAX = 1e9; const int MIN = -1*1e9; const ll MAXLL = 1e18; const ll MINLL = -1*1e18; const string Y = "yukicoder"; int main() { int N; cin >> N; string S; cin >> S; vector DP(N+1,vector(10,vector(2))); DP[0][0][0] = 1; for(int i = 0; i < N; i++) { for(int j = 0; j <= 9; j++) { if(j != 9) { if(S[i] == '?') { DP[i+1][j+1][1] += DP[i][j][0]; } else if(S[i] == Y[j]) { DP[i+1][j+1][0] += DP[i][j][0]; DP[i+1][j+1][1] += DP[i][j][1]; } } DP[i+1][j][1] += DP[i][j][1]; DP[i+1][j][0] += DP[i][j][0]; } } cout << (DP[N][9][0]+DP[N][9][1]).val() << endl; return 0; }