/*
TASK: flower
LANG: C
*/

#include<stdio.h>

long long dp[2][100][100][100];
int n,h,i,j,rns,rwe,l;
int north=0,west=0,nk,wk;
int cur=1,prev=0;
int tmp;

char t[4];

int main () {
//    freopen("test.txt","rt",stdin);
    scanf("%d",&n);
    for (i=0;i<n;i++) {
        scanf("%s",&t);
        if (t[0]=='N') north++;
        else if (t[0]=='W') west++;
        }

    dp[0][0][0][0]=1;
    
    for (h=1;h<=n;h++) {
        nk=north<h?north:h;
        for (i=0;i<=nk;i++) {
            wk=west<(h-i)?west:(h-i);
            for (j=0;j<=wk;j++) {
                rns=(i<<1)+j-h;
                rwe=((i+j)<<1)-h-rns;
                if (rwe<0) continue;
                if (rns<0)
                           if (rwe+rns>=0) {
                                           rwe+=rns;
                                           rns=0;
                                           }
                           else continue;
                while (rwe>-1) {

                      if (rns<=north) dp[cur][i][rns][rwe]=0;
                      rns++;
                      rwe--;
                      if (rwe>wk) break;
                      }
                }
            }
        tmp=h-1;
        nk=north<tmp?north:tmp;
        for (i=0;i<=nk;i++) {
            wk=west<(tmp-i)?west:(tmp-i);
            for (j=0;j<=wk;j++) {
                rns=(i<<1)+j-tmp;
                rwe=((i+j)<<1)-tmp-rns;
                if (rwe<0) continue;
                if (rns<0)
                           if (rwe+rns>=0) {
                                           rwe+=rns;
                                           rns=0;
                                           }
                           else continue;
                while (rwe>-1) {
                      if (rns<=north) {
                                      l=dp[prev][i][rns][rwe];
                                      if (i<north) dp[cur][i+1][rns+1][rwe]+=l;
                                      if (rns) dp[cur][i][rns-1][rwe]+=l;
                                      if (j<west) dp[cur][i][rns][rwe+1]+=l;
                                      if (rwe) dp[cur][i][rns][rwe-1]+=l;
                                      }
                      rns++;
                      rwe--;
                      if (rwe>wk) break;
                      }
                }
            }

        cur=prev;
        prev=!prev;
        }

    printf("%lld\n",dp[prev][north][0][0]-1);
    return 0;
    }
