Степан на уроках інформатики почав вивчати властивості паліндромів. Нагадаємо, що рядок називається паліндромом, якщо він дорівнює перевернутому рядку. Оскільки Степан швидко знайшов всі підрядки даного рядка, що є паліндромами, то він вирішив ускладнити собі завдання, а саме він по черзі замінює символи у рядку на символ "?", який він вважає рівним будь-якому символу. Наприклад, Степан вважає рівними рядки "ABA" і "A?A", "ABB" і "AB?", а рядки "AB?", "ABC??" та "?C?" він вважає паліндромами.
Степан хоче після кожної заміни символу на "?" визначати кількість підрядків рядка , що є паліндромами (звісно в тому, як це розуміє сам Степан). До того ж Степан вважає підрядки різними, якщо у них відрізняються позиції початку і/або кінця.
Напишіть програму, яка автоматизує дії Степана, щоб він нарешті зайнявся чимось іншим.
Перший рядок вхідного файлу містить рядок , що містить тільки маленькі латинські букви. Гарантується, що рядок непорожній, і його довжина не перевищує . Далі міститься чисел від до – номери символів, які замінюються на "?".
Після зчитування рядка виведіть кількість його підрядків, що є паліндромами.
Далі ви повинні разів виконати таку послідовність дій:
Зчитати число – номер символу рядка, який замінюють на "?" на поточному кроці (1 \le K \le N).
Підрахувати кількість підрядків поточного рядка, що є паліндромами.
Вивести це число у окремому рядку.
Гарантується, що ніякий символ даного рядка не буде двічі замінено на "?".
Дивіться опис у вхідних даних.
Примітка: У рядку "abac" паліндромами є підрядки , , , , . Після заміни третього символу на "?" маємо рядок "ab?c", в якому паліндромами є , , , , , , . Після заміни другого символу на "?" маємо рядок "a??c", в якому паліндромами не є тільки підрядок . Після наступних замін всі підрядки будуть паліндромами.
Приклад 1