Сжатие
Вася твёрдо решил, что его не устраивает качество спам-фильтра на его почтовом ящике и решил сделать свой. Он подготовил список L_0 из 1 ≤ N_0 ≤ 5·10^4 слов, каждое длиной не менее чем 1 и не более чем 40 символов. По его мнению, любое сообщение, содержащее хотя бы одно из этих слов — спам.
Список получился большой, и Вася хочет его сжать. А именно: он хочет заменить список L_0 на список непустых слов L_1, такой, чтобы для каждого слова w_0L_0 существовало слово w_1L_1, являющееся префиксом слова w_0. Однако, если в L_1 будут слишком короткие слова, то много сообщений будет ошибочно классифицировано, как спам. Подумав, Вася выработал критерий оптимальности: он хочет найти такой список L_1, чтобы штраф был минимален, где |w| обозначает длину строки w.
Помогите Васе решить эту задачу.
Входные данные
Первая строка входа содержит N_0 — число слов в списке L_0. Последующие N_0 строк содержат слова из списка L_0, состоящие из маленьких латинских символов.
Выходные данные
В первой строке выведите число P, соответствующее оптимальному списку L_1. Во второй строке выведите N_1 — число слов в списке L_1. В последующих строках выведите слова списка L_1. В случае, если существует несколько оптимальных решений, любое будет засчитано.