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

#include <cstdio>
#include <memory.h>
using namespace std;

typedef long long type;

const int MAX_N      = 106;
const int MAX_DIGITS = 3; //!!!!!!!!!!!!!!!!!!!!!!!!
const int base       = 1000000000;

class Long {
	public:
	int a[MAX_DIGITS];
	Long() { memset(a,0,sizeof(a)); }
	void minus () {
		int i, um=-1, r;

		for (i=MAX_DIGITS-1; i>=0; i--) {
			r = a[i]+um;
			a[i] = (r+base)%base;
			um = r==-1?-1:0;
		}			 
	}
	
	void output ();
};

void Long::output ()
{
	int i;
	
	for (i=0; a[i]==0&&i<MAX_DIGITS; i++) ;
	
	if (i==MAX_DIGITS) { printf ("0\n"); return; }
	printf ("%d", a[i]); i++;
	
	for (; i<MAX_DIGITS; i++)
		printf ("%.9d", a[i]);
		
	printf ("\n");
}

Long operator+(Long &p, Long &q)
{
	int i, um=0;
	Long S;
	
	for (i=MAX_DIGITS-1; i>=0; i--) {
		S.a[i] = (p.a[i]+q.a[i]+um)%base;
		um = (p.a[i]+q.a[i]+um)/base;
	}
	
	return S;
}

int n;
int SN=0, SW=0;

Long 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++;
	}
}
/*
void solve1 ()
{
	type d[MAX_N/2][MAX_N/2][MAX_N/2][MAX_N/2];
	int p1, p2, q1, q2;
	
	d[0][0][0][0] = 1;
	
	for (p1=0; p1<=SN; p1++)	
		for (p2=0; p2<=SN; p2++)
			for (q1=0; q1<=SW; q1++)
				for (q2=0; q2<=SW; q2++) {
					d[p1+1][p2][q1][q2] += d[p1][p2][q1][q2];
					d[p1][p2][q1+1][q2] += d[p1][p2][q1][q2];
					if (p1>p2) d[p1][p2+1][q1][q2] += d[p1][p2][q1][q2];
					if (q1>q2) d[p1][p2][q1][q2+1] += d[p1][p2][q1][q2];
				}
		
	printf ("%lld\n", d[SN][SN][SW][SW]-1);
}
*/

void solve2 ()
{
	int p1, p2, q1, q2;
	
	dp[0][0][0][0].a[MAX_DIGITS-1] = 1;
	
	for (p1=0; p1<=SN; p1++)	
		for (p2=0; p2<=SN; p2++)
			for (q1=0; q1<=SW; q1++)
				for (q2=0; q2<=SW; q2++) {
					dp[p1+1][p2][q1][q2] = dp[p1][p2][q1][q2]+dp[p1+1][p2][q1][q2];
					dp[p1][p2][q1+1][q2] = dp[p1][p2][q1][q2]+dp[p1][p2][q1+1][q2];
					if (p1>p2) dp[p1][p2+1][q1][q2] = dp[p1][p2][q1][q2]+dp[p1][p2+1][q1][q2];
					if (q1>q2) dp[p1][p2][q1][q2+1] = dp[p1][p2][q1][q2]+dp[p1][p2][q1][q2+1];
				}

	dp[SN][SN][SW][SW].minus ();
  	dp[SN][SN][SW][SW].output ();
}

int main ()
{
	//freopen ("flower.in", "r", stdin);
	
   input ();
   
   //if (n<20) solve1 ();
   //else
	solve2 ();
	
	return 0;
}
