using namespace std;
int len[26][26];
int main(){
//计算每个字母变成其他字母要多少步,0到25表示的是a到z,len[0][25]表示的就是a到z需要多少步
for(int i=0;i<26;++i){
for(int j=0;j<26;++j){
len[i][j]=min(abs(i-j),26-abs(i-j));//abs(x)计算的是x的绝对值
}
}
//给ans初始化一个题目结果达不到的很大的值
int ans=1<<30;
string s;
cin>>s;
//最后所有字母相等的时候等于的是哪个字母呢?我们可以不去计算跟考虑,因为只有26个字母
//我们直接遍历26种情况,取其中最小的就可以了
for(int i=0;i<26;++i){
int count=0;
for(int j=0;j<s.length();++j) count+=len[i][s[j]-'a'];
if(count<ans) ans=count;
}
cout<<ans;
return 0;
}

京公网安备 11010502036488号