{
TASK:LOGINIS
LANG:PASCAL
}
program loginis_reiskinys;
  { 288 ir 290 uždavinys, 15 olimpiada, II etapas, Jaunesniųjų ir Vyresniųjų grupė }  
  const PRAD = 'reisk.dat';
        MAX = 5; { maksimalus kintamųjų skaičius }
  type lentele = array [1..MAX] of char;

  function rk (k: lentele; x: char): char;
    { apskaičiuoja kintamojo arba konstantos reikšmę }
  begin
    if (x = '1') or (x='0')
       then rk := x
       else rk := k[ord(x) - ord ('a') + 1];
  end; { rk }

  function skaiciuoti (k: lentele; reisk: string): char;
    var i: integer;
        k1, k2: char;
  begin
    { apskaičiuojame neiginius }
    { anuliuojame dvigubus neiginius }
    while pos ('not not', reisk) > 0 do
      begin
        i := pos ('not not ', reisk);
        delete (reisk, i, 8)
      end;
    while pos ('not', reisk) > 0 do
      begin
        i := pos ('not', reisk);
        k1 := reisk[i+4]; { imame kintamąjį, kurio neiginį skaičiuosime }
        if rk(k, k1) = '0'
           then reisk[i+4] := '1'  { paneigiame }
           else reisk[i+4] := '0';
        delete (reisk, i, 4);
      end;
   { apskaičiuojame konjunkcijas (and) }
   while pos ('and', reisk) > 0 do
     begin
       i := pos ('and', reisk);
       k1 := reisk[i-2]; k2 := reisk[i+4];
       if (rk(k, k1) = '1') and (rk(k, k2) = '1')
          then reisk[i-2] := '1'
          else reisk[i-2] := '0';
       delete(reisk, i-1, 6);
     end;
   { apskaičiuojame disjunkcijas (or) }
   while pos ('or', reisk) > 0 do
     begin
       i := pos ('or', reisk);
       k1 := reisk[i-2]; k2 := reisk[i+3];
       if (rk(k, k1) = '1') or (rk(k, k2) = '1')
          then reisk[i-2] := '1'
          else reisk[i-2] := '0';
       delete(reisk, i-1, 5);
     end;
    skaiciuoti := rk(k, reisk[1]);
  end; { skaičiuoti }

  procedure skaityti (var k: lentele; var reisk: string);
    var f: text;
        i, sk: integer;
        tarpas: char;
  begin
    assign (f, PRAD);
    reset (f);
    for i := 1 to MAX-1 do
       read (f, k[i], tarpas);
    readln (f, k[MAX]);
    readln (f, reisk);
    close (f);
  end; { skaityti }

  var reisk: string;
      k: lentele;
      reiksme: char;
begin
  skaityti (k, reisk);
  reiksme := skaiciuoti (k, reisk);
  writeln (reiksme);
end.
