CF1304B Longest Palindrome

题目描述

Gildong 回到了解题的世界,现在他正在学习回文串。他了解到,回文串是指一个字符串正着读和反着读都相同。例如,字符串 "pop"、"noon"、"x" 和 "kkkkkk" 都是回文串,而 "moon"、"tv" 和 "abab" 不是回文串。空字符串也是回文串。 Gildong 非常喜欢回文串的概念,所以他想用它来做些游戏。他有 $n$ 个长度相同为 $m$ 的互不相同的字符串。他可以丢弃其中的一些字符串(也可以一个都不丢弃,或者全部丢弃),并重新排列剩下的字符串,使得它们拼接起来后成为一个回文串。他还希望这个回文串尽可能长。请你帮他找出一种方案。

输入格式

第一行包含两个整数 $n$ 和 $m$($1 \le n \le 100$,$1 \le m \le 50$),分别表示字符串的数量和每个字符串的长度。 接下来的 $n$ 行,每行包含一个长度为 $m$ 的仅由小写拉丁字母组成的字符串。所有字符串互不相同。

输出格式

第一行输出你构造出的最长回文串的长度。 第二行输出这个回文串。如果有多种答案,输出任意一种即可。如果回文串为空,可以输出一个空行,或者这一行不输出。

说明/提示

在第一个样例中,"battab" 也是一个合法答案。 在第二个样例中,包括样例输出在内,一共有 4 种不同的合法答案。我们不会给出其它答案的提示。 在第三个样例中,空字符串是唯一合法的回文串。 由 ChatGPT 4.1 翻译