Количество палиндромов
Степан на уроках информатики начал изучать свойства палиндромов. Напомним, что строка называется палиндромом, если она равна перевёрнутой строке. Так как Степан быстро нашёл все подстроки заданной строки, являющиеся палиндромами, он решил усложнить своё задание, а именно он по очереди изменяет символы в строке на символ "?", который он считает равным любому символу. Например, Степан считает равными строки "ABA" и "A?A", "ABB" и "AB?", а строки "AB?", "ABC??" и "?C?" он считает палиндромами.
Степан хочет после каждой замены символа на "?" определить количество подстрок стродиа S, являющиеся палиндромами (естественно, как это понимает сам Степан). К тому же Степан считает подстроки разными, если в них отличаются позиции начала и/или конца.
Напишите программу, автоматизирующую действия Степана, чтобы он наконец-то смог заняться чем-то другим.
Входные данные
Первая стока входного файла содержит стрку S, содержащую только маленькие латинские буквы. Гарантируется, что строка S непуста, и её длина N не превышает 4000. Далее содержится N чисел от 1 до N – номера символов, изменяющиеся на "?".
После считывания строки S выведите количество её подстрок, являющихся палиндромами.
Далее вы должны N раз выполнить следующую последовательность действий:
Считать число K – номер символа строки, который изменяется на "?" на текущем шаге (1 ≤ K ≤ N).
Подсчитать количество подстрок текущей строки, являющихся палиндромами.
Вывести это число в отдельной строке.
Гарантируется, что никакой символ заданной строки не будет дважды изменён на "?".
Выходные данные
Смотрите описание входных данных.
Примечание: В строке "abac" палиндромами являются подстроки (1, 1), (2, 2), (3, 3), (4, 4), (1, 3). После замены третьего символа на "?" имеем строку "ab?c", в ней палиндромами являются (1, 1), (2, 2), (3, 3), (4, 4), (1, 3), (2, 3), (3, 4). После замены второго символа на "?" имеем строку "a??c", в которой палиндромом не является только подстрока (1, 4). После последующих замен все подстроки будут палиндромами.