printРабочее место участника

printЗадачи

831. Лишние буквы

Ограничения: время – 2s/4s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Дана символьная строка `S` длины `N` (`0\ ≤\ N\ ≤\ 100`) и словарь, который содержит `M` слов (`0\ ≤\ M\ ≤\ 100`), длина каждого из которых не превышает `N`. Строка и слова состоят из символов a, b, …, z.
Напишите программу, которая определяет наименьшее количество символов, которое необходимо вычеркнуть из заданной строки `S`, чтобы результирующую строку можно было представить как последовательность слов словаря. Количество использований каждого слова не ограничивается. Считается, что пустую строку можно представить с помощью слов любого словаря.
В первой строке входного файла находится два целых числа `N` и `M`, разделенных пробелом. Во второй строке находится символьная строка `S`. В каждой из следующих `M` строк находится слово словаря.
В единственной строке выходного файла должно находиться натуральное число – минимальное количество вычеркиваний, после которых зашифрованная строка может быть представлена в виде последовательности слов словаря.

Пример ввода

11 5
abafchtdsya
aba
a
bach
dsy
zero

Пример вывода

2
Примечание: Строка в примере после вычеркивания лишних букв f и t примет вид abachdsya (было сделано два вычеркивания: abafchtdsya), и может быть представлена как последовательность следующих слов: a, bach, dsy, a.
XIV Всеукраинская олимпиада по информатике, 2001
loading