Недавно Вася закончил писать книгу. Теперь перед ним стоит проблема выбора названия. Вася хочет, чтобы название было непонятным и загадочным, чтобы его книга выделялась на фоне других. Поэтому название должно представлять собой одно слово, в котором содержится хотя бы один раз каждая из k первых букв латинского алфавита, и не содержатся никакие другие. Так же название должно быть палиндромом, то есть читаться одинаково как слева направо, так и справа налево.
Вася уже составил примерный вариант названия. Вам задан шаблон названия s, состоящий из маленьких латинских букв и знаков вопроса. Ваша задача — заменить в шаблоне все знаки вопроса на маленькие латинские буквы так, чтобы получившееся название соответствовало описанным выше требованиям. Каждый вопрос нужно заменить ровно одной буквой, удалять и добавлять новые символы в шаблон не разрешается. Если подходящих названий несколько, выберите первое в алфавитном порядке, чтобы Васина книга встречалась как можно раньше во всех каталогах.
Выходные данные
Если решения не существует, выведите IMPOSSIBLE. Иначе в единственной строке должно содержаться искомое название, соответствующее заданному шаблону. Это название должно быть палиндромом, и в нем могут встречаться только первые k букв латинского алфавита, причем каждая из этих k букв должна встречаться хотя бы один раз. Если подходящих названий несколько, выведите лексикографически наименьшее.
Лексикографическое сравнение реализует оператор < в современных языках программирования. Строка a лексикографически меньше строки b, если существует такое i (1 ≤ i ≤ |s|), что ai < bi, а для любого j (1 ≤ j < i) aj = bj. |s| обозначает длину заданного шаблона.
Примеры
| № | Входные данные | Выходные данные |
|
1
|
3 a?c
|
IMPOSSIBLE
|
|
2
|
2 a??a
|
abba
|
|
3
|
2 ?b?a
|
abba
|