问题 5006 --虎哥更改字符串

5006: 虎哥更改字符串

时间限制: 1 Sec  内存限制: 128 MB
提交: 199  解决: 118
[提交][状态][命题人:]

题目描述

虎哥最近得到了一个由小写英文字母组成的字符串s,希望字符串s的所有子字符串都是不同的。子字符串是由字符串的一些连续字符组成的字符串。例如,字符串“aba”具有子字符串“”(空子字符串)、“a”、“b”、“a”、“ab”、“ba”、“aba”。
如果字符串s至少有两个相等的子字符串,则虎哥会将某些位置的字符更改为其他小写英文字母。更改角色是一项非常累人的工作,因此虎哥希望执行尽可能少的更改。
你能帮虎哥找到给定字符串的所有子字符串都不同所需的最小更改次数,或者确定这是不可能的。

输入

第一行仅包含一个整数n(1≤n≤100000),表示字符串s的长度。
第二行为一个由n个小写英文字母组成的字符串s。

输出

如果无论怎样更改,都无法使字符串s使所有的子串都不同,则输出-1,否则输出最小更改次数。
样例输入
Copy
2
aa
样例输出
Copy
1

提示

测试样例2:
输入:
4
koko

输出:2
 
测试样例3:
输入:
5
murat

输出:0

样例解释:
  样例1中,一种解决方案是将第一个字符改为字符'b'。
  样例2中,一种解决方案是将第一个字符改为字符'a',将第二个字符改为字符'b',更改之后的字符串变为"abko"。

来源

 

[提交][状态]