Олимпиадный тренинг

Задача . E. Поликарп и преобразование строки


У Поликарп есть строка \(s\). Поликарп делает следующие действия до тех пор, пока строка \(s\) не станет пустой (изначально \(t\) — пустая строка):

  • дописывает справа к \(t\) строку \(s\), то есть совершает присвоение \(t = t + s\), где \(t + s\) обозначает конкатенацию (соединение) строк \(t\) и \(s\);
  • выбирает произвольным образом какую-то одну букву из \(s\) и удаляет из \(s\) все её вхождения (выбранная буква обязательно должна встречаться в \(s\) на момент выполнения этого действия).

Поликарп выполняет данную последовательность действий строго в заданном порядке.

Отметим, что в конце концов строка \(s\) станет пустой, а строка \(t\) будет равна некоторому значению (и это значение определяется неоднозначно, оно зависит от порядка удаления).

Например, если изначально \(s\)abacaba», то события могли разворачиваться следующим образом:

  • \(t\)abacaba», выбрана буква 'b', теперь \(s\)aacaa»;
  • \(t\)abacabaaacaa», выбрана буква 'a', теперь \(s\)c»;
  • \(t\)abacabaaacaac», выбрана буква 'c', теперь \(s\)=«» (пустая строка).

Вам необходимо восстановить исходное значение строки \(s\) по итоговому значению \(t\) и найти порядок, в котором удалялись буквы из \(s\).

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

В первой строке записано одно целое число \(T\) (\(1 \le T \le 10^4\)) — количество наборов входных данных. Далее следуют \(T\) наборов входных данных.

Каждый набор входных данных состоит из одной строки \(t\), состоящей из строчных букв латинского алфавита. Длина \(t\) не превышает \(5 \cdot 10^5\). Сумма длин всех строк \(t\) во всех наборах входных данных теста не превышает \(5 \cdot 10^5\).

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

Для каждого набора входных данных выведите в отдельной строке:

  • \(-1\), если ответа не существует;
  • две строки через пробел. Первая строка должна содержать начальное возможное значение \(s\). Вторая строка должна содержать последовательность букв — в каком порядке надо удалять буквы из \(s\), чтобы получилась строка \(t\). Например, если выведена строка «bac», то сначала удалялись все вхождения буквы 'b', потом — все вхождения буквы 'a', затем — все вхождения буквы 'c'. Если существует несколько решений, выведите любое из них.
Примечание

Первый набор входных данных разобран в условии.


Примеры
Входные данныеВыходные данные
1 7
abacabaaacaac
nowyouknowthat
polycarppoycarppoyarppyarppyrpprppp
isi
everywherevrywhrvryhrvrhrvhv
haaha
qweqeewew
abacaba bac
-1
polycarp lcoayrp
is si
everywhere ewyrhv
-1
-1

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя