CF883H Palindromic Cut

题目描述

Kolya有一个长度为 $n$ 的字符串 $s$ ,其中含有大小写英文字母和数字。 他想要重新编排 $s$ 中字符的顺序并将它切割为最少个子串,使得每个子串都为回文串且所有子串长度相等。回文串指的是从前往后读和从后往前读相同 的字符串,例如`madam`或`racecar`。 你的任务是帮助Kolya计算出所需切割出 $s$ 子串总数的最小值。

输入格式

第一行包括一个整数 $n(1 \leq n \leq 4⋅10^5)$。 第二行为长度为 $n$ 的字符串 $s$。

输出格式

第一行输出一个整数 $k$ ,表示需要切割出的最少子串数。 第二行输出切割后的 $k$ 个字符串,每两个之间用一个空格隔开。你可以以任意顺序输出这些等长的字符串。 由 @Segment_Tree 提供翻译,Reformed by @devdede。