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 希望操作次数尽可能少。

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

输入格式

输入的第一行是一个整数 nn1n1000001 \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

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