kc

Time limit: 0.4s Memory limit: 32MB Input: kc.in Output: kc.out

Tassadar a supravieţuit cursului de Kultură şi Civilizaţie, dar a rămas profund afectat de această experienţă şi este convins că, de fapt, cursurile erau incoerente.

Pentru a verifica acest lucru, el a întocmit un dicţionar care cuprinde toate cuvintele incoerente pe care le-a întâlnit de-a lungul vieţii. Gradul de incoerenţă al unui cuvânt din dicţionar este egal cu lungimea cuvântului. Cursul de Kultură şi Civilizaţie poate fi reprezentat printr-un şir de NN litere mici ale alfabetului latin.

Tassadar vrea să insereze spaţii în curs şi să delimiteze, astfel, cuvintele care apar în acesta. El doreşte să facă acest lucru astfel încât suma gradelor de incoerenţă ale cuvintelor din curs să fie maximă.

Ajutaţi-l pe Tassadar să afle cât de incoerent este cursul de Kultură şi Civilizaţie!

Date de intrare

Fişierul de intrare kc.in conţine pe prima linie numerele NN şi KK, reprezentând lungimea cursului, respectiv numărul de cuvinte din dicţionar. Pe următoarea linie se află un şir de NN litere, reprezentând cursul de Kultură şi Civilizaţie. Pe următoarele KK linii se vor afla cuvintele din dicţionar, câte unul pe linie.

Date de ieșire

Fişierul de ieşire kc.out va conţine pe prima linie suma maximă a gradelor de incoerenţă care se poate obţine prin delimitarea cuvintelor din curs cu spaţii.

Restricții și precizări

  • 1N100 0001 \leq N \leq 100 \ 000
  • 1K100 0001 \leq K \leq 100 \ 000
  • 1L100 0001 \leq L \leq 100 \ 000, unde LL este suma lungimilor cuvintelor din dicţionar
  • Un cuvânt este o subsecvenţă maximală de litere mici ale alfabetului latin şi este delimitat la stânga şi la dreapta fie de un spaţiu, fie de începutul cursului, fie de sfârşitul cursului
  • Dacă un cuvânt din curs nu apare în dicţionar, acesta are gradul de incoerenţă 00
  • Pentru teste în valoare de 1010 puncte, N1 000N \leq 1 \ 000 şi L1 000L \leq 1 \ 000
  • Pentru teste în valoare de alte 3030 de puncte, N1 000N \leq 1 \ 000

Exemplu

kc.in

3 3
abc
a
c
abc

kc.out

3

Explicație

Există patru moduri în care putem delimita cuvintele din curs cu spaţii: abc (conţine un singur cuvânt cu gradul de incoerenţă 33), ab c (conţine un cuvânt cu gradul de incoerenţă 00 şi unul cu gradul de incoerenţă 11), a bc (conţine un cuvânt cu gradul de incoerenţă 11 şi unul cu gradul de incoerenţă 00) şi a b c (conţine două cuvinte cu gradul de incoerenţă 11 şi unul cu gradul de incoerenţă 00). Dintre toate aceste modalităţi, este optim să nu inserăm niciun spaţiu în curs, pentru a obţine suma gradelor de incoerenţă maximă, aceasta fiind egală cu 33.

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