/*
TASK: flower
LANG: C
*/

#include<stdio.h>

int 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;

char t;

int main () {
//    freopen("test.txt","rt",stdin);
    scanf("%d",&n);
    for (i=0;i<n;i++) {
        scanf("%c",&t);
        scanf("%c",&t);
        if (t=='N') north++;
        else if (t=='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;
                      }
                }
            }
        t=h-1;
        nk=north<t?north:t;
        for (i=0;i<=nk;i++) {
            wk=west<(t-i)?west:(t-i);
            for (j=0;j<=wk;j++) {
                rns=(i<<1)+j-t;
                rwe=((i+j)<<1)-t-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("%d\n",dp[prev][north][0][0]-1);
    return 0;
    }
