Палиндромы
시간 제한2초메모리 제한1024 MB
문자열과 단방향 문자 치환 규칙이 주어질 때, 팰린드롬으로 만들기 위해 필요한 최소 치환 횟수와 변경할 위치를 구한다.
문제
Василий после тяжёлого футбольного мятча любит отдыхать, а именно смотреть кино или играть в компьютерные игры. Но после очередного матча ему надоело играть в футбольные симуляторы и смотреть сериалы. Тогда он решил взять у своего брата-близнеца игру Palin.
Игра заключалась в следующем: дана строка и правил замены одного символа на другой. То есть, если -й символ строки будет равен , то его можно будет заменить на символ , где и --- символы -го правила замены. Кроме того, если символ номер в строке уже был изменен, то изменить его еще раз невозможно. Требуется из данной строки получить палиндром. Напомним, что палиндромом является строка, которая одинаково читается и слева направо, и справа налево.
И тут Василий задался следующим вопросом: за какое минимальное количество операций замены такое возможно?
입력
В первой строке входного файла дана строка (), содержащая только маленькие латинские буквы. Во второй строке дано число () --- количество правил. Следующие строк содержат по два символа и (маленькие латинские буквы) --- символы в очередном правиле замены. Все различны.
출력
Если из данной строки можно получить палиндром, следуя описанным правилам, то в первой строке выходного файла выведите минимальное количество операций замены, выполнив которые это можно сделать. Во второй строке в таком случае выведите номера символов, которые необходимо изменить. Символы в строке нумеруются с единицы.
Если же получить из данной строки палиндром невозможно, выведите в первой строке выходного файла -1.