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.