Как вы знаете, Уфа — город рэперов. Говорят, что для получения звания почетного жителя этого города нужно решить следующую задачу.
Вам предлагается написать куплет для вашей песни. Однако сами строки уже были выбраны за вас, и вам лишь остается расставить их в нужном порядке.
Предложенные строки настолько сложные, что любой слушатель захочет прочитать составленный вами текст для лучшего понимания. Именно поэтому ваша задача сделать упор на графическую рифму. Графическая рифма - это рифма из слов, окончания которых совпадают по написанию. Таким образом, качество куплета определяется суммой уровней созвучности всех пар соседних строк. Уровень созвучности двух строк определяется следующим образом:
Внимание! При подсчёте уровня созвучности учитываются абсолютно все символы, включая пробел и знаки препинания (ведь при чтении текста они выделяются интонацией, что тоже влияет на восприятие куплета).
Например, уровень созвучности строк "abac caba" и "babc caba" равен $$$6$$$, так как они имеют общий суффикс "c caba" длины $$$6$$$.
Вам дали набор $$$S$$$, состоящий из $$$n$$$ строк. Пусть $$$f(x, y)$$$ - уровень созвучности строк $$$x$$$ и $$$y$$$. Тогда качество куплета равно сумме $$$f(S_i, S_{i+1})$$$ $$$(1 \le i \le n-1)$$$. Требуется так расставить строки, чтобы качество куплета было максимальным. Гарантируется, что строки состоят из строчных букв английского алфавита a-z, знаков препинания ,.!?' и пробела.
В первой строке дано число $$$n$$$ $$$1 \le n \le 10^6$$$ — количество строк в наборе.
Затем следуют $$$n$$$ строк, $$$i$$$-я из которых содержит непустую строку $$$S_i$$$. Гарантируется, что сумма длин всех строк не превосходит $$$10^6$$$.
В первой строке выведите качество созданного вами куплета. Затем выведите $$$n$$$ строк, в том порядке, в котором вы их расставили, чтобы получить максимальную суммарную созвучность.
| Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи |
| $$$0$$$ | $$$0$$$ | Тесты из условия | — |
| $$$1$$$ | $$$17$$$ | $$$n \le 7$$$ и длина каждой строки не более $$$1000$$$ | — |
| $$$2$$$ | $$$23$$$ | Все строки состоят только из букв a и b | — |
| $$$3$$$ | $$$21$$$ | Длина каждой строки не больше $$$2$$$ | — |
| $$$4$$$ | $$$39$$$ | — | 0-3 |
8baby shark, doo-doo, doo-doo, doo-doobaby sharkmommy sharkbaby shark, doo-doo, doo-doo, doo-doomommy shark, doo-doo, doo-doo, doo-doomommy shark, doo-doo, doo-doo, doo-doobaby shark, doo-doo, doo-doo, doo-doomommy shark, doo-doo, doo-doo, doo-doo
191 baby shark mommy shark baby shark, doo-doo, doo-doo, doo-doo baby shark, doo-doo, doo-doo, doo-doo baby shark, doo-doo, doo-doo, doo-doo mommy shark, doo-doo, doo-doo, doo-doo mommy shark, doo-doo, doo-doo, doo-doo mommy shark, doo-doo, doo-doo, doo-doo
5she was looking kinda dumbi ain't the sharpest tool in the shedsomebody once told mewith her finger and her thumbthe world is gonna roll me
6 somebody once told me the world is gonna roll me i ain't the sharpest tool in the shed she was looking kinda dumb with her finger and her thumb
3abac cabaabobababc caba
8 abac caba babc caba aboba
4aababaababbaa
5 aa baa bab aabab
Пояснение к примеру 3:
Итого, качество куплета составляет $$$2+6=8$$$. Можно доказать, что это максимальное возможное значение.
| Name |
|---|


