program fragmento_paieska;
  const PR = 'REDAKT.DAT';

  function yra_didz_raide (fr: string): boolean;
    { patikrina, ar fragmente fr yra nors viena didioji raid }
    var yra: boolean;
        i: integer;
  begin
    yra := false;
    for i := 1 to length(fr) do
      if fr[i] in ['A'..'Z', '', '', '', '', '­', '', '§', '¦', '']
         then yra := true;
    yra_didz_raide := yra;
  end; { yra_did_raid }

  procedure maz_i_didz (var eil: string);
    { masias teksto eiluts eil raides pakeiia didiosiomis }
    var i: integer;
  begin
    for i := 1 to length(eil) do
      if eil[i] in ['a'..'z'] then eiL[i] := upcase(eil[i])
      else case eil[i] of
               '': eil[i] := '';
               '': eil[i] := '';
               '': eil[i] := '';
               '': eil[i] := '';
               '': eil[i] := '­';
               '': eil[i] := '';
               '': eil[i] := '§';
               '': eil[i] := '¦';
               '': eil[i] := '';
            end;
  end; { ma__did }

  function lygu (eil, fr: string): boolean;
   { patikrina, ar duotasis fragmentas prasideda nuo pirmosios teksto
     eiluts }
     var taip: boolean;
         i: integer;
  begin
    taip := true;
    for i := 1 to length(fr) do
     if eil[i] <> fr[i]
        then taip := false;
    lygu := taip
  end; { lygu }

  function kelis_kartus (fr: string; { duotasis fragmentas }
                         k: integer;  { teksto eilui skaiius }
                         var byla: text): integer;
    { suskaiiuoja kelis kartus fragmentas sutinkamas duotame tekste }
    var kiek, i: integer;
        skirti, keliama: boolean;
        eil, s: string;
  begin
    kiek := 0; { fragmento tekste dar neradome }
    { ar reiks skirti didisias bei masias raides }
    skirti := yra_didz_raide (fr);
    { jei nereiks - fragment uraome didiosiomis raidmis }
    if not skirti
       then maz_i_didz (fr);
    eil := ''; keliama := false;
    { skaitome po vien teksto eilut }
    for i := 1 to k do
      begin
        readln (byla, s);
        if not skirti
           then maz_i_didz (s);
        { naujai perskaityt eilut prijungiame prie turimos }
        if keliama
           then eil := eil + s
           else eil := eil + ' ' + s;
        { apskaiiuojama ar bus keliama  tolesn eilut }
        keliama := eil[length(eil)] = '-';
        if keliama
           then delete (eil, length(eil), 1);
        { iekome teksto fragmento }
        while length(fr) <= length(eil) do
          begin
            if lygu (eil, fr)
               then kiek := kiek + 1;
            delete (eil, 1, 1);
          end;
      end;
    kelis_kartus := kiek
  end; { kelis_kartus }



  var byla: text;
      rez, k: integer;
      fr: string;
begin
  { perskaitoma dalis pradini duomen }
  assign (byla, PR);
  reset (byla);
  readln (byla, fr);
  readln (byla, k);
  rez := kelis_kartus (fr, k, byla);
  writeln (rez);
  close (byla);
end.