Məsələlər
Сжатие
Сжатие
Вася твёрдо решил, что его не устраивает качество спам-фильтра на его почтовом ящике и решил сделать свой. Он подготовил список \textbf{L_0} из \textbf{1} ≤ \textbf{N_0} ≤ \textbf{5·10^4} слов, каждое длиной не менее чем \textbf{1} и не более чем \textbf{40} символов. По его мнению, любое сообщение, содержащее хотя бы одно из этих слов --- спам.
\includegraphics{https://static.e-olymp.com/content/c1/c1e5657c445a0882d39a01c1538cf1a9c936ba83.jpg}
\includegraphics{file:///E:/2012-2013/ACM/BSU-2012/problems/compression/statements/.html/russian/55769d612ffdece1c0167001ae185df8d8aac11c.png}
Список получился большой, и Вася хочет его сжать. А именно: он хочет заменить список \textbf{L_0} на список непустых слов \textbf{L_1}, такой, чтобы для каждого слова \textbf{w_0L_0} существовало слово \textbf{w_1L_1}, являющееся префиксом слова \textbf{w_0}. Однако, если в \textbf{L_1} будут слишком короткие слова, то много сообщений будет ошибочно классифицировано, как спам. Подумав, Вася выработал критерий оптимальности: он хочет найти такой список \textbf{L_1}, чтобы штраф был минимален, где \textbf{|w|} обозначает длину строки \textbf{w}.
Помогите Васе решить эту задачу.
\InputFile
Первая строка входа содержит \textbf{N_0} --- число слов в списке \textbf{L_0}. Последующие \textbf{N_0} строк содержат слова из списка \textbf{L_0}, состоящие из маленьких латинских символов.
\OutputFile
В первой строке выведите число \textbf{P}, соответствующее оптимальному списку \textbf{L_1}. Во второй строке выведите \textbf{N_1} --- число слов в списке \textbf{L_1}. В последующих строках выведите слова списка \textbf{L_1}. В случае, если существует несколько оптимальных решений, любое будет засчитано.
Giriş verilənləri #1
4 abxcaba abax abay abaz
Çıxış verilənləri #1
146028888064 2 aba abxcaba