#include const int Mod = 998244353; int main() { int i, N; char S[2000002]; scanf("%d", &N); for (i = 0; i < N; i++) scanf("%s", &(S[i*16+1])); int cur, prev; long long dp[2][3] = {}; if (S[1] == '.') { dp[0][0] = 1; if (S[2] != 'd') dp[0][1] = 1; if (S[2] != 'k') dp[0][2] = 1; } else if (S[1] == 'd') dp[0][1] = 1; else dp[0][2] = 1; for (i = 2, cur = 1, prev = 0; i <= N * 16; i++, cur ^= 1, prev ^= 1) { if (i % 2 == 0) { if (S[i] == '.') { dp[cur][0] = (dp[prev][0] + dp[prev][1] + dp[prev][2]) % Mod; if (i == N * 16 || S[i+1] != 'd') dp[cur][1] = (dp[prev][1] + dp[prev][2]) % Mod; else dp[cur][1] = 0; if (i == N * 16 || S[i+1] != 'k') dp[cur][2] = (dp[prev][1] + dp[prev][2]) % Mod; else dp[cur][2] = 0; } else if (S[i] == 'd') { dp[cur][0] = 0; dp[cur][1] = (dp[prev][1] + dp[prev][2]) % Mod; dp[cur][2] = 0; } else { dp[cur][0] = 0; dp[cur][1] = 0; dp[cur][2] = (dp[prev][1] + dp[prev][2]) % Mod; } } else { if (S[i] == '.') { dp[cur][0] = dp[prev][0]; if (S[i+1] != 'd') dp[cur][1] = (dp[prev][0] + dp[prev][1] + dp[prev][2]) % Mod; else dp[cur][1] = 0; if (S[i+1] != 'k') dp[cur][2] = (dp[prev][0] + dp[prev][1] + dp[prev][2]) % Mod; else dp[cur][2] = 0; } else if (S[i] == 'd') { dp[cur][0] = 0; dp[cur][1] = (dp[prev][0] + dp[prev][1] + dp[prev][2]) % Mod; dp[cur][2] = 0; } else { dp[cur][0] = 0; dp[cur][1] = 0; dp[cur][2] = (dp[prev][0] + dp[prev][1] + dp[prev][2]) % Mod; } } } printf("%lld\n", (dp[prev][0] + dp[prev][1] + dp[prev][2]) % Mod); fflush(stdout); return 0; }