// BOI 2005
// Task: MANUSCRIPT
// Solution
// Author: Ahto Truu

// This is an inefficient solution using brute force search
// Scores about 25%

const
   vow = ['a', 'e', 'i', 'o', 'u'];

var
   f : text;
   ve, vc, ce, cc : integer;
   s : string;
   n : longint;

{ i. positsiooni tähe valimine; p on eelmine täht;
  ne on eelmise tähe korduste arv; nc on eelmise tähe liigi korduste arv }
procedure gen(i : integer; p : char; ne, nc : integer);
var c : char;
begin
   { kui kordusi on liiga palju, on variant tuksis }
   if p in vow then begin
      if ne > ve then exit;
      if nc > vc then exit;
   end else begin
      if ne > ce then exit;
      if nc > cc then exit;
   end;
   { kui kõik tähed on paigas, on uus variant }
   if i > length(s) then begin
      n := n + 1;
      exit;
   end;
   { muidu vaatame jätkamise võimalusi }
   for c := 'a' to 'z' do begin
      if (c = s[i]) or (s[i] = '*') then begin
         if c = p then
            gen(i + 1, c, ne + 1, nc + 1)
         else if (c in vow) = (p in vow) then
            gen(i + 1, c, 1, nc + 1)
         else
            gen(i + 1, c, 1, 1);
      end;
   end;
end;

begin
   assign(f, 'manu.in'); reset(f);
   readln(f, ve, vc, ce, cc);
   readln(f, s);
   close(f);

   n := 0;
   gen(1, ' ', 0, 0);

   assign(f, 'manu.out'); rewrite(f);
   writeln(f, n);
   close(f);
end.
