{
TASK:flower
LANG:PASCAL
}
var
  n,ns,we:longint;
  m:array[0..100,0..100]  of longint;

function f2(f,s:longint):longint;
var
   i,j,t:longint;
begin
   if m[f,s]>0 then exit(m[f,s]);
   if f=0 then exit(1);
   if s=0 then exit(1);
   m[f,s]:=f2(f-1,s)+f2(f,s-1);
   f2:=m[f,s];
end;

procedure inp;
var
   f:text;
   i:longint;
   ch:char;
begin
   assign(f,'');
   reset(f);
   readln(f,n);
   for i:=1 to n do
   begin
     read(f,ch);
     if (ch='W')or(ch='E') then inc(we) else inc(NS);
     read(f,ch);
   end;
   close(f);
end;

function solve1:longint;
var
   i,j,lim:longint;
begin
   ns:=ns div 2;we:=we div 2;
   if ns<we then lim:=we else lim:=ns;
   for i:=1 to lim  do m[i,0]:=1;
   for i:=1 to n-1 do m[i,i+1]:=0;
   m[1,1]:=1;

   for i:=2 to lim do
     for j:=1 to i do
       m[i,j]:=m[i-1,j]+m[i,j-1];

   solve1:=m[ns,ns]*m[we,we];

end;

var
  p1,p2:longint;
begin
   inp;

   p1:=f2(ns,we);
   p2:=solve1;
   writeln(p1*p2-1);
end.
