/*
TASK: flower
LANG: C++
*/

#include <cstdio>
using namespace std;

typedef long long type;

const int MAX_N = 106;

int n;
int SN=0, SW=0;
type dp[MAX_N/2][MAX_N/2][MAX_N/2][MAX_N/2];

void input ()
{
	int i;
	char c;
	
	scanf ("%d", &n);	
	
	for (i=1; i<=n; i++) {
		do {
			scanf ("%c", &c);
		} while (c!='N' && c!='S' && c!='W' && c!='E');
		
		if (c=='N') SN++;
		if (c=='W') SW++;
		//printf (" |%c| ", c);
	}
	
	//printf ("%d %d\n", SN, SW);
}

void solve ()
{
	int p1, p2, q1, q2;
	
	dp[0][0][0][0] = 1;
	
	for (p1=0; p1<=n; p1++)	
		for (p2=0; p2<=n; p2++)
			for (q1=0; q1<=n; q1++)
				for (q2=0; q2<=n; q2++) {
					dp[p1+1][p2][q1][q2] += dp[p1][p2][q1][q2];
					dp[p1][p2][q1+1][q2] += dp[p1][p2][q1][q2];
					if (p1>p2) dp[p1][p2+1][q1][q2] += dp[p1][p2][q1][q2];
					if (q1>q2) dp[p1][p2][q1][q2+1] += dp[p1][p2][q1][q2];
					
					//printf ("--- %lld\n", dp[p1][p2][q1][q2]);
				}
}

int main ()
{
	//freopen ("flower.in", "r", stdin);
	
   input ();
   solve ();
   
   printf ("%lld\n", dp[SN][SN][SW][SW]-1);
	
	return 0;
}
