小红的字符串
题号:NC221493
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小红有一个字符串,她每次操作可以改变一个字符的值。
对于'a'、'b'、'c'、……、'y'等小写字母,小红每次操作可以把该字母变成比它大一位的字母,即变成'b'、'c'、'd'、……、'z'。
对于'A'、'B'、'C'、……、'Y'等大写字母,小红每次操作可以把该字母变成比它大一位的字母,即变成'B'、'C'、'D'、……、'Z'。
对于'0'、'1'、'2'、……、'8'等数字,小红每次操作可以把该数字变成比它大一位的数字,即变成'1'、'2'、'3'、……、'9'。
对于一些特殊的字符:
1. 'z' 会变成 'A'。
2. 'Z' 会变成 '0'。
3. '9' 会变成 'a'。

现在小红想使这个字符串不存在任意相同的两个字符,你能输出这个最小的操作次数吗?

输入描述:

第一行一个正整数,代表字符串的长度。
接下来一个长度为的,仅包含小写字母、大写字母或数字的字符串。
()

输出描述:

如果小红无法达成目的,则输出 -1 ,否则输出最小的操作次数。
示例1

输入

复制
4
abSA

输出

复制
0

说明

显然小红不需要任何操作,该字符串已经不存在任意两个相同的字符。
示例2

输入

复制
4
zAzz

输出

复制
5

说明

小红对第三个字符操作 3 次,z -> A -> B -> C
小红对第一个字符操作 2 次,z -> A -> B
形成的字符串是 BaCz ,该字符串已经不存在任意两个相同的字符。可以证明这样操作是最优的之一,最小操作数为 5 。