#L2991. #2991. 「CTSC2016」香山的树

    ID: 3202 传统题 1000ms 512MiB 尝试: 25 已通过: 2 难度: 9 上传者: 标签>其他构造字符串KMP组合数学容斥原理DP

#2991. 「CTSC2016」香山的树

题目描述

众所周知,香山的红叶非常著名。然而,CTSC 举行的时间是在 55 月,而红叶的季节是秋天,所以这个季节是看不到红叶的,于是我们在 CTSC 比赛中就只能讨论香山的树了。

s-quark 很喜欢这些树,他计划在每棵树上贴上一个各不相同的标签。每个标签为条形,可以在树干上绕成一圈。为了区分每一棵树,s-quark 在每个标签上印了一个由小写英文字母组成的字符串。由于树干周长的限制,标签的长度也是有限的,因此这个字符串至多只能由 NN 个字母组成。

但是,由于标签是在树干上围成一圈的,所以当标签在树上贴好以后,就不再能找到标签的起始位置了。所以,如果两棵树上的标签循环同构,例如分别为 abc\text{abc}cab\text{cab},那么这两棵树就不再能通过标签区分了。针对这个问题,s-quark 想了一个巧妙的办法。对于一个已经在树上贴好的标签,s-quark 规定它的起始位置必须是能够使得字符串的字典序最小的起始位,即如果看到的字符串是 aba\text{aba},那么就可以推断出从正确的起始位置开始看到的字符串应为 aab\text{aab}

另外,对于有些标签,例如 abab\text{abab},尽管符合字典序最小的规则,但是这样的起始位置不唯一,s-quark 认为这种情况也是不理想的。所以,这样的标签 s-quark 也会避免使用。s-quark 已经把所有的树编好了顺序,准备在第一棵树上贴标签 a\text{a},之后按照字典序给每棵树贴上不同的标签。

n=3n = 3 为例,s-quark 将依次使用这些标签来标记这些树木:a\text{a}aab\text{aab}aac\text{aac},……,aaz\text{aaz}ab\text{ab}abb\text{abb},……,abz\text{abz}ac\text{ac},……

s-quark 知道,香山上的树总共有 KK 棵。他想知道他将在最后一棵树上贴的标签是什么。但是,这个问题显然太简单了。现在, s-quark 要问你,如果他在第一棵树上贴的标签是字符串 SS,那么他将在最后一棵树上贴的标签是什么呢?


输入格式

输入文件为

输入的第一行两个正整数 NNKK,分别为字符串的长度和树的总数。

第二行一个由小写英文字母组成的字符串 SS,表示在第一棵树上所贴的标签。SS 的长度不超过 NN,并且保证是一个合法的标签。


输出格式

输出文件为

输出仅一行,输出一个字符串 TT,表示 s-quark 将在最后一棵树上贴的标签,或输出 1-1,表示剩余的合法标签数量不足以贴完所有的树。


样例 1

输入

3 10
a

输出

aaj

样例 2

输入

3 10
xy

输出

yzz

样例 3

输入

1 100
a

输出

-1

样例 4

输入

25 1000000000000000
u

输出

uuuuuvxzuxvwwyzzuyzvxuvxw

数据范围与提示

测试点 NN KK 数据特点
1 =8=8 104\le 10^4 SS 为字符串 a\text{a}
2,3 =9=9 106\le 10^6 以下均无
4 =8=8 1015\le 10^{15}
5 =9=9
6 =10=10
7,8 30\le 30
9,10 50\le 50