{*************************************************************************
 *                                                                       *
 *                       Pogromcy Algorytmów 2004                        * 
 *                                                                       *
 *   Rozwiązanie zadania: Jasiek                                         *
 *   Plik:                jas.pas                                        *
 *   Autor:               Krzysztof Diks                                 *
 *************************************************************************}


{ Program wzorcowy dla zadania Jasiek.
  Stosujemy metode Greeniego obliczania pola wielokata.
  Jezeli (x_j,y_j) sa kolejnymi wierzcholkami wielokata przy obejsciu
  przeciwnym do ruchu wskazowek zegara, j = 0,1,...,n,
  oraz x_0 = x_n i y_0 = y_n, to pole wyznacza sie
  ze wzoru A = 0.5(a_0 + a_1 + ... + a_[n-1]),
  gdzie a_i = x_iy_[i+1] - x_[i+1]y_i.
  Tak wiec cala trudnosc w zadaniu sprowadza sie do wyznaczenia kolejnych
  punktow kratowych na obwodzie wielokata przy zalozeniu, ze startujemy z
  punktu (0,0). W tym celu przyjmijmy, ze wielokat bedziemy obchodzili
  przykladajac kostke 2x1 i zakladajac, ze ostatni rozwazony wierzcholek
  na obwodzie jest w srodku prawego, dluzszego brzegu kostki. }

var
  pierwszy, r1, r2: char; { pierwszy i dwa kolejne kierunki w obejsciu}
  x1, y1:  longint; {ostatni rozwazany punkt na obwodzie}
	x2, y2: longint; {kolejny punkt na obwodzie}
	P : longint; {obliczane Pole}
	ostatni_obrot : boolean; 
begin
  readln(r1);
	readln(r2);
	if r2 = 'K' then writeln(1)
	else
	begin
	  pierwszy := r2;
	  P := 0;
		x1 := 0; y1 := 0; ostatni_obrot := false;
		repeat
		  {writeln(r1,' ',r2);}
		  r1 := r2; readln(r2); 
			if r2 = 'K' then
			begin
			  {trzeba jeszcze wrocic do punktu wyjscia}
			  r2 := pierwszy; ostatni_obrot := true
			end;	  
			case r1 of
				  'E': case r2 of
								 'E': begin x2 := x1 + 1; y2 := y1 end;
								 'N': begin x2 := x1 + 1; y2 := y1 + 1; P := P + 1 end;
								                                      {ucinam pol kratki}
								 'W': begin x2 := x1; y2 := y1 + 1; P := P + 2 end;
								                                      {ucinam cala kratke}
                 'S': begin x2 := x1; y2 := y1 end					
							 end;	 
					'N': case r2 of
					       'N': begin x2 := x1; y2 := y1 + 1 end;
								 'W': begin x2 := x1 - 1; y2 := y1 + 1; P := P + 1 end;
								                                      {ucinam pol kratki}
								 'S': begin x2 := x1 - 1; y2 := y1; P := P + 2 end;
								                                      {ucinam cala kratke}
                 'E': begin x2 := x1; y2 := y1 end
							 end;	 
					'W': case r2 of
					       'W': begin x2 := x1 - 1; y2 := y1 end;
								 'S': begin x2 := x1 - 1; y2 := y1 - 1; P := P + 1 end;
								                                      {ucinam pol kratki}
								 'E': begin x2 := x1; y2 := y1 - 1; P := P + 2 end;
								                                      {ucinam cala kratke}
                 'N': begin x2 := x1; y2 := y1 end
							 end;	 
					'S': case r2 of
					       'S': begin x2 := x1; y2 := y1 - 1 end;
								 'E': begin x2 := x1 + 1; y2 := y1 - 1; P := P + 1 end;
								                                      {ucinam pol kratki}
								 'N': begin x2 := x1 + 1; y2 := y1; P := P + 2 end;
								                                      {ucinam cala kratke}
                 'W': begin x2 := x1; y2 := y1 end
							 end	 
			end;
			P := P + x1*y2 - x2*y1;	
			{writeln('x1 = ', x1, ' y1 = ', y1, ' x2 = ', x2, ' y2 = ', y2, ' P = ',P);}
			x1 := x2; y1 := y2;																								
		until ostatni_obrot;
	  P := P div 2; 
		writeln(P)
	end
end.				       
	