[NICA #2] 字符串入门题

题目背景

小波说这是字符串入门题极好的,所以这是极好的。

题目描述

给定一个仅包含大小写字母和数字的字符串 $s$,问能否将 $s$ 拆分成至少 $k$ 个子串 $s_1,s_2,\dots,s_t(t\ge k)$ 满足 $\forall 1<i\le t$ 有 $s_i$ 是 $s_1s_2\dots s_{i-1}$(这里表示的是拼接)的子串。 一个字符串 $s$ 是另一个字符串 $t$ 的子串当且仅当可以通过删除 $t$ 的一个可以为空的前缀以及一个可以为空的后缀后得到 $s$。

输入输出格式

输入格式


第一行两个正整数 $n,k$,其中 $n$ 是 $s$ 的长度。 第二行一个字符串 $s$,仅包含大小写字母和数字。

输出格式


如果不存在这样的拆分方案,输出 `-1` 。 否则第一行输出一个正整数 $t(t\ge k)$,表示你要把 $s$ 拆分成 $t$ 个字符串。 接下来 $t$ 行,每行一个字符串,第 $i$ 行表示 $s_i$。你需要保证 $s_1s_2\dots s_t=s$。

输入输出样例

输入样例 #1

6 2
114514

输出样例 #1

2
1145
14

输入样例 #2

8 2
a1Aa11Aa

输出样例 #2

3
a1A
a1
1Aa

输入样例 #3

11 2
stoImakforz

输出样例 #3

-1

说明

#### 样例 1 解释 `1145|14`是一种合法的拆分方案,因为拆分出了 $2$ 个字符串且 $2\ge k$,并且`14`是`1145`的一个子串。 #### 样例 2 解释 `a1A|a1|1Aa`是一种合法的拆分方案,因为拆分出了 $3$ 个字符串且 $3\ge k$,并且`a1`是`a1A`的一个子串,且`1Aa`是`a1Aa1`的一个子串。 #### 样例 3 解释 尝试所有拆分方案后发现无论如何拆分都无法满足条件。 #### 数据范围 对于所有数据,满足 $2\le k\le n\le 10^6$,$s$ 仅由大小写字母和数字构成。