#include using namespace std; const int kInf = 0x3f3f3f3f; const string QWERTY = "QWERTYUIOP0ASDFGHJKL0ZXCVBNM"; int Dp[105][26][26]; pair Pos[26]; int GetDist(int a, int b) { return abs(Pos[a].first - Pos[b].first) + abs(Pos[a].second - Pos[b].second); } int main() { int row = 0, column = 0; for(int i = 0; i < (int)QWERTY.size(); ++i) { if(QWERTY[i] == '0') { ++row; column = 0; continue; } Pos[QWERTY[i] - 'A'] = make_pair(row, column); ++column; } for(int k = 0; k < 105; ++k) for(int i = 0; i < 26; ++i) for(int j = 0; j < 26; ++j) Dp[k][i][j] = kInf; Dp[0]['F' - 'A']['J' - 'A'] = 0; string str; cin >> str; for(int i = 0; i < (int)str.size(); ++i) { for(int j = 0; j < 26; ++j) for(int k = 0; k < 26; ++k) { Dp[i + 1][str[i] - 'A'][k] = min(Dp[i + 1][str[i] - 'A'][k], Dp[i][j][k] + GetDist(j, str[i] - 'A')); Dp[i + 1][j][str[i] - 'A'] = min(Dp[i + 1][j][str[i] - 'A'], Dp[i][j][k] + GetDist(k, str[i] - 'A')); } } int best = kInf; for(int i = 0; i < 26; ++i) for(int j = 0; j < 26; ++j) best = min(best, Dp[(int)str.size()][i][j]); cout << best << endl; }