#include #include #include using namespace std; typedef long long int64; const int kInf = 1e9+10; int dp[110][26][26]; vector keys= { "QWERTYUIOP", "ASDFGHJKL", "ZXCVBNM"}; pair pos(char a) { for (int i = 0; i < keys.size(); ++i) { for (int j = 0; j < keys[i].size(); ++j) { if (keys[i][j] == a) { return {i, j}; } } } } int dist(char a, char b) { auto pa = pos(a); auto pb = pos(b); return abs(pa.first - pb.first) + abs(pa.second - pb.second); } void solve() { string s; cin >> s; for (int i = 0; i <= s.length(); ++i) { for (int j = 0; j < 26; ++j) { for (int k = 0; k < 26; ++k){ dp[i][j][k] = kInf; } } } dp[0]['F'-'A']['J'-'A'] = 0; for (int i = 0; i < s.length(); ++i) { for (int j = 0; j < 26; ++j) { for (int k = 0; k < 26; ++k){ dp[i+1][s[i]-'A'][k] = min(dp[i+1][s[i]-'A'][k], dp[i][j][k] + dist(j+'A', s[i])); dp[i+1][j][s[i]-'A'] = min(dp[i+1][j][s[i]-'A'], dp[i][j][k] + dist(k+'A', s[i])); } } } int ans = kInf; for (int j = 0; j < 26; ++j) { for (int k = 0; k < 26; ++k){ ans = min(ans, dp[s.length()][j][k]); } } cout << ans << "\n"; } int main() { int test = 1; for (;test; --test) { solve(); } }