Muguraș

Time limit: 0.2s Memory limit: 16MB Input: muguras.in Output: muguras.out

Muguraș a început în sfârșit să studieze informatică, iar Mugurel, tatăl său, este cel mai mândru de alegerea făcută de el.

Neștiind care este cel mai bun limbaj pentru începători, el a ales să învețe Mac, cel mai simplu limbaj de programare din „Imperiul Rațelor de Cauciuc”.

În limbajul Mac avem doar două tipuri de operații posibile:

  • x:=sx := s (atribuire directă). După această operație, variabila identificată prin xx va reține șirul de caractere dat de ss.
  • x=a+bx = a + b (atribuire din memorie). După această operație, variabila identificată prin xx va reține concatenarea șirurilor de caractere (în această ordine) din variabila identificată prin aa și cea identificată prin bb (variabilele aa și bb rămân neschimbate, doar variabila xx se modifică).

Cerință

Mugurel vrea să îl trimită pe Muguraș la Olimpiada Locală de Informatică pentru Rațe, dar prima dată trebuie să se asigure că știe să codeze și îi dă să rezolve următoare problemă: după efectuarea a NN operații în limbajul Mac, de câte ori apare SS ca subșir în variabila VV?

Din păcate încă este la început de drum, așa că Muguraș vă roagă să îl ajutați să ajungă la Olimpiadă.

Date de intrare

Fișierul de intrare va conține pe prima linie un număr întreg NN, reprezentând numărul de operații. A doua linie conține două șiruri de caractere, SS și VV, separate printr-un spațiu, reprezentând șirul care trebuie căutat și variabila din care trebuie determinat rezultatul. Următoarele NN linii conțin câte un șir de caractere, reprezentând o operație în limbajul de programare Mac.

Date de ieșire

Fișierul de ieșire va conține pe prima linie un singur număr întreg KK, reprezentând rezultatul cerut.

Restricții și precizări

Notăm cu X|X| lungimea denumirii unei variabile și cu T|T| lungimea unui șir din atribuirea directă.

  • 1N100 0001 \leq N \leq 100 \ 000
  • 1V,S101 \leq |V|, |S| \leq 10
  • 1X,T101 \leq |X|, |T| \leq 10
  • Toate denumirile variabilelor și șirurile de caractere conțin doar litere mici ale alfabetului englez.
  • Un subșir este o secvență consecutivă de caractere dintr-un șir.
  • Variabilele folosite la atribuirea din memorie nu conțin niciodată șiruri de caractere vide.
  • Se garantează că 1K10181 \leq K \leq 10^{18}.
  • Se garantează că toate operațiile sunt corecte.
  • Muguraș nu vă recomandă să învățați Mac, există limbaje de programare mult mai folositoare.
  • Pentru teste în valoare de 55 puncte, X=1|X| = 1 și S=1|S| = 1.
  • Pentru alte teste în valoare de 55 puncte, S=1|S| = 1.
  • Pentru alte teste în valoare de 1010 puncte, N15N \leq 15.
  • Pentru alte teste în valoare de 2020 puncte, X=1|X| = 1.
  • Pentru alte teste în valoare de 6060 de puncte, nu există restricții suplimentare

Exemplul 1

muguras.in

5
abc x
p := ab
q := cdef
x = p + q
q := tabc
x = x + q

muguras.out

2

Explicație

După a treia operație, xx va reține șirul abcdef. După a cincea operație, xx va reține șirul abcdeftabc, în care șirul abc se regăsește de 22 ori ca subșir.

Exemplul 2

muguras.in

5
haha v
a := haha
b := haha
c := ha
v = a + b
v = v + c

muguras.out

4

Explicație

După a patra operație, vv va reține șirul hahahaha. După a cincea operație, vv va reține șirul hahahahaha, în care șirul haha se regăsește de 44 ori ca subșir (literele dintr-un șir pot să apară în mai multe subșiruri).

Exemplul 3

muguras.in

7
a ax
ax := a
ax = ax + ax
ax = ax + ax
ax = ax + ax
ax = ax + ax
ax = ax + ax
ax = ax + ax

muguras.out

64

Log in or sign up to be able to send submissions!