eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Набірний принтер

Набірний принтер

Вам потрібно надрукувати \textbf{N} слів на наборному принтері. Набірний принтер -- це такий старий принтер, у який потрібно встановлювати маленькі металеві елементи (кожен з яких містить літеру) для того, щоб сформувати слова. Після цього до них притискається аркуш паперу, щооб віддрукувати слово. Ваш принтер дозволяє викоеувати наступні операції: \begin{enumerate} \item Додавати літеру в кінець слова, яке набрано в принтері. \item Видаляти останню літеру зі слова, яке набрано у принтері. Це можна робити лише у тому випадку, коли в принтері встановлена хоча б одна літера. \item Друкувати слово, набране у принтері. \end{enumerate} Спочатку принтер пустий: він не містить металевих елементів з літерами. По завершенню друку дозволяється залишати в принтері деякі літери. Також можна друкувати слова у довільному порядку, який вам подобається. Оскільки кожна операція займає деякий час, вы хочете мінімізувати загальну кількість операцій. Ви повинні написати програму, яка за заданими \textbf{N} словами знаходить мінімальну кількість операцій, необхідних для друку всіх цих слів у довільному порядку, і виводить одну з таких послідовностей операцій. \textbf{1} <= \textbf{N} <= \textbf{25 000} (\textbf{N} -- Кількість слів, які потрібно надрукувати) \textbf{Вхідні дані} Ваша програма повинна читати зі стандартного вводу наступні дані: \begin{enumerate} \item Рядок \textbf{1} містить ціле число \textbf{N} -- кількість слів, які потрібно надрукувати. \item Кожен з наступних \textbf{N} рядків містить слово. Кожне слово складається лише з маленьких латинських літер ('\textbf{a}' -- '\textbf{z}') і має довжину від \textbf{1} до \textbf{20} символів, включно. \end{enumerate} Все слова різні. \textbf{Вихідні дані} Ваша программа повинна вивести у стандартний вивід наступні дані: \begin{enumerate} \item Рядок \textbf{1} повинен містити ціле число \textbf{M}, якое означає мінімальну кількість операцій, потрібних для друку \textbf{N} слів. \item Кожен з наступних \textbf{M} рядків повинен містити по одному символу. Ці символи описують послідовність викоеуваних операцій. Кожна операція повинна бути описана наступним чином: \begin{enumerate} \item Додавання літери позначається самою літерою, набраною у нижньому регістрі \item Видалення останньої літери позначається символом '\textbf{-}' (мінус, \textbf{ASCII} код \textbf{45}) \item Друк поточного слова позначається символом '\textbf{P}' (велика латинська літреа \textbf{P}) \end{enumerate} \end{enumerate}
Ліміт часу 4 секунди
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
3
print
the
poem
Вихідні дані #1
20
t
h
e
P
-
-
-
p
o
e
m
P
-
-
-
r
i
n
t
P