链接
题解
一个字母也是一个子串,所有子串都不同,那肯定所有字母都不能相同,根据鸽巢原理,当 n > 26 n>26 n>26时无解
当 n ≤ 26 n\leq 26 n≤26时,强行把这个串变成 n n n个不同字母
代码
#include <bits/stdc++.h>
#define rep(_,__) for(_=1;_<=(__);_++)
#define maxn 1000010
using namespace std;
char s[maxn];
int main()
{
int n;
cin>>n>>s;
strlen(s);
if(n>26)
{
cout<<-1;
return 0;
}
set<char> S;
for(int i=0;i<n;i++)
{
S.emplace(s[i]);
}
cout<<n-S.size();
return 0;
}