CF672B.Different is Good

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Different is Good

题目描述

一位智者曾对 Kerem 说过“不同是好的”,因此 Kerem 渴望生活中的一切都与众不同。

最近,Kerem 得到了一串由小写英文字母组成的字符串 ss。由于 Kerem 喜欢一切都与众不同,他希望自己的字符串 ss 的所有子串都是不同的。子串是由字符串中若干连续字符组成的字符串。例如,字符串 "aba" 的子串有 ""(空子串)、"a"、"b"、"a"、"ab"、"ba"、"aba"。

如果字符串 ss 至少有两个相同的子串,那么 Kerem 就会将某些位置的字符改成其它小写英文字母。改变字符的工作非常繁琐,因此 Kerem 希望操作次数尽可能少。

你的任务是求出至少需要多少次修改,才能使给定字符串的所有子串都不同,或者判断是否无法实现。

输入格式

输入的第一行是一个整数 nn(1≤n≤1000001 \leq n \leq 100000),表示字符串 ss 的长度。

第二行是一个长度为 nn、仅由小写英文字母组成的字符串 ss。

输出格式

如果无法通过修改使 ss 的所有子串都不同,则输出 -1。否则,输出所需的最小修改次数。

说明/提示

在第一个样例中,一种可行的方案是将第一个字符改为 'b'。

在第二个样例中,可以把第一个字符改成 'a',第二个字符改成 'b',那么字符串变为 "abko"。

由 ChatGPT 5 翻译

样例

2
aa
1
4
koko
2
5
murat
0

在线编程 IDE

建议全屏模式获得最佳体验