Тренажёр <<-пальцевый набор>>
시간 제한3초메모리 제한512 MB
주어진 이진 문자열을 각 단어의 접두사나 접미사 조각으로 잘라 붙이면서 단어마다 정해진 비용을 지불할 때, 전체 비용의 최솟값을 구하거나 불가능하면 -1을 출력한다.
문제
Современный робот-программист должен владеть слепым -пальцевым методом набора бинарных строк, состоящих из символов <<0>> и <<1>>. В инновационном тренажёре, созданном специально для уже освоивших -пальцевый набор роботов, предлагается следующее упражнение. В верхней части экрана выводится строка, состоящая из нулей и единиц. Ниже выводятся пары (,~), каждая из которых состоит из бинарного слова и его стоимости --- количества штрафных баллов, начисляемых за каждое использование слова при наборе строки.
Робот должен набрать заданную строку в виде последовательности записанных подряд префиксов или суффиксов предложенных ему бинарных слов. Одно и то же слово можно использовать произвольное количество раз, но за каждое использование префикса или суффикса начисляются штрафные баллы, равные стоимости этого слова.
Префиксом слова называется последовательность подряд идущих символов этого слова, начинающаяся с первого символа слова, а суффиксом --- последовательность подряд идущих символов этого слова, заканчивающаяся последним символом слова. Слово целиком является как своим префиксом, так и своим суффиксом.
Требуется написать программу, которая вычисляет минимально возможное суммарное количество штрафных баллов, начисляемых роботу за набор заданной строки с использованием префиксов и суффиксов предложенных бинарных слов, или определяет, что строку набрать невозможно.
입력
Первая строка входных данных содержит три целых числа , и --- длину заданной строки, количество слов, префиксы и суффиксы которых можно использовать при её наборе, и суммарную длину этих слов (; ; ).
Во второй строке находится заданная строка, состоящая из символов <<0>> или <<1>>. Следующие строк описывают предлагаемые для использования бинарные слова. Сначала указывается целая стоимость слова в штрафных баллах (). Затем в той же строке через пробел следует непустое слово, состоящее из символов <<0>> или <<1>> Длина каждого слова не превосходит значения , дополнительные ограничения на которое накладываются в некоторых подзадачах.
출력
Выходные данные должны содержать одно целое число --- минимальное количество штрафных баллов, которое потребуется, чтобы набрать заданную строку, или число , если требуемым образом набрать её невозможно.
힌트
В первом примере можно сначала набрать суффикс первого слова длины два, затем его же суффикс длины один, далее префикс второго слова длины три после чего первое слово целиком.