program sablonai;
   { vyresni—j— grup‚ }
   const PRAD = 'SABLON.DAT';
         REZ  = 'SABLON.REZ';
         MAX  = 500; { maksimalus žablono ilgis }

   type sablonas = array [1..MAX] of char;


  procedure zvaigzdutes (var L: integer; var sabl: sablonas);
   { kiekvienoje ne‘inomoje dalyje, kurioje yra ‘vaig‘du‡i—,
     palieka tik po vien… ‘vaig‘dutŠ ir t… pa‡i… ne‘inomosios dalies
     prad‘ioje }
   var i, j, raide, zv: integer;
        sabl_n: sablonas;
  begin
    j := 0; { naujojo žablono indeksas }
    raide := 0; { kada naujame žablone paskutin kart… sutikta raid‚(skaitmuo)}
    zv := 0; { kada naujame žablone paskutin kart… sutikta ‘vaig‘dut‚ }
    for i := 1 to L do
      case sabl[i] of
       '*': if zv <= raide { jei žioje ne‘. dalyje ‘vaig. dar nebuvo }
              then begin
                     j := j + 1;
                     sabl_n[j] := '?';
                     sabl_n[raide+1] := '*';
                     zv := raide+1;
                    end;
       else begin
               j := j + 1;
               sabl_n[j] := sabl[i];
               if sabl[i] <> '?' then raide := j;
             end;
      end;
     L := j; sabl := sabl_n;
  end; { ‘vaig‘dut‚s }

  function ekvivalentu (L1, L2: integer; { žablon— ilgiai }
                        sabl1, sabl2: sablonas): boolean;
    { patikrina, ar žablonai ekviavelnt–s }
    var ekviv: boolean;
        i: integer;
  begin
    zvaigzdutes (L1, sabl1);
    zvaigzdutes (L2, sabl2);
    ekviv := L1=L2;
    for i := 1 to L1 do
      if sabl1[i] <> sabl2[i]
         then ekviv := false;
    ekvivalentu := ekviv;
  end; { ekvivalentu }

  procedure skaityti (var L1, L2: integer; var sabl1, sabl2: sablonas);
    var f: text;
        i: integer;
  begin
    assign (f, PRAD);
    reset (f);
    readln (f, L1, L2);
    for i := 1 to L1 do
      read (f, sabl1[i]);
    readln (f);
    for i := 1 to L2 do
      read (f, sabl2[i]);
    close (f);
  end; { skaityti }

  procedure rasyti (rezult: boolean);
    var f: text;
  begin
    assign (f, REZ);
    rewrite (f);
    if rezult then writeln ('TAIP')
              else writeln ('NE');
    close (f);
  end; { ražyti }

  var L1, L2: integer;
      sabl1, sabl2: sablonas;
      rezult: boolean;
begin
  skaityti (L1, L2, sabl1, sabl2);
  rezult := ekvivalentu (L1, L2, sabl1, sabl2);
  rasyti (rezult);
end.