#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
const int mod = 998244353;
typedef long long ll;
typedef unsigned long long ull;
const ll INF = 1e18;
ll n;
ll dp[N][26];
void solve()
{
cin>>n;
string s;
cin>>s;
s = " "+s;
for(int i=1;i<=n;i++)
{
int idx = s[i]-'A';
ll mn = INF;
for(int j=0;j<26;j++)
{
mn = min(mn,dp[i-1][j]);
dp[i][j] = mn+abs(idx-j);
}
}
ll ans = INF;
for(int i=0;i<26;i++)
{
ans = min(ans,dp[n][i]);
}
cout<<ans<<'\n';
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t=1;
// cin>>t;
while(t--)
{
solve();
}
return 0;
}
一道比较明显的dp题

京公网安备 11010502036488号