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

function f1(n,s:longint):longint;
var
  res:longint;
begin
   if n<s then begin writeln('error');halt;end;
   if m[n,s]>0 then exit(m[n,s]);
   if s=0 then exit(1);
   if n>s then m[n,s]:=f1(n-1,s)+f1(n,s-1)
   else m[n,s]:=f1(n,s-1);
   f1:=m[n,s];

end;

function f2(f,s:longint):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
   i:longint;
   ch:char;
begin
   readln(n);
   for i:=1 to n do
   begin
     read(ch);
     if (ch='W')or(ch='E') then inc(we) else inc(NS);
     read(ch);
   end;
end;

var
  i,j:integer;
  ans:longint;
begin
   inp;
   ans:=f1(ns div 2,ns div 2);
   fillchar(m,sizeof(m),0);

   ans:=ans*f1(we div 2,we div 2);
   fillchar(m,sizeof(m),0);

   ans:=ans*f2(ns,we)-1;
   writeln(ans);
end.
