Время

09:40:11
11 Февраля 2012
Пятёрка за неделю 22
Осталось: 12 часов 20 минут
Конец: 11.02.2012 22:00
Лидер: NuM
Версия для печати

Минимизация шаблона

Для поиска слов, состоящих из латинских букв, в некотором словаре используется шаблон, в котором '?' означает ровно один произвольный символ, а '*' – ноль или более произвольных символов. Некоторые шаблоны являются эквивалентными, то есть соответствуют одинаковому множеству слов. Например, оба шаблона "*??*a" и "?*?a" соответствуют словам из трех или более букв, оканчивающимся на букву 'a', но второй шаблон короче.

Напишите программу, которая находит самый короткий шаблон, эквивалентный заданному.


Технические условия

Входные данные

Входной файл содержит несколько шаблонов длиной от 1 до 50 символов, состоящих из латинских букв и символов '?' и '*'. Каждый шаблон записан на отдельной строке.

Выходные данные

В выходной файл для каждого шаблона вывести на соответствующей строке его минимальный эквивалент. Если существует несколько вариантов, вывести первый в лексикографическом порядке ('*' идет в алфавите раньше '?')


Информация о задаче

Лимит времени: 1 секунда
Лимит памяти: 64 MB
Баллы за пройденный тест: 20
Сложность: 26% 25/34

Пример

Пример входных данных

*??*a
T***nd?*
*?*?*?*

Пример выходных данных

*??a
T*nd*?
*???


← Секретный бункер Список задач Палочки →