/*
TASK:flower
LANG:C
*/
#include <stdio.h>
#define MAXGROUP 52
#define MAXCOMB 104

long long cm[MAXCOMB][MAXCOMB];
long long gr[MAXGROUP];
int N, A=0, B=0;
long long group(int a)
{
    int i;
    if(gr[a])return gr[a];
    for(i=1; i<a; i++)
        gr[a] += group(i)*group(a-i);
    return ++gr[a];
}
long long comb(int a, int b)
{
    if(!a || !b)return 1;
    if(cm[a][b])return cm[a][b];
    cm[a][b] = comb(a-1, b) + comb(a, b-1);
    return cm[a][b];
}

main()
{
    long long a, b, c, r;
    int i, y;
    char ch;
    for(i=0; i<MAXGROUP; i++)gr[i]=0;
    for(i=0; i<MAXCOMB; i++)for(y=0; y<MAXCOMB; y++)cm[i][y]=0;
    gr[1]=1;
    scanf("%d", &N);
    while(N>A+B)
    {
        ch = getchar();
        if(ch=='N' || ch == 'S')A++;
        if(ch=='E' || ch == 'W') B++;       
    }
    A/=2; B/=2;
    
    a = group(A);
    b = group(B);
    c = comb(A*2, B*2);
    r = a*b*c - 1;
    
    printf("%ld\n", r);
    return 0;
}
