#include using namespace std; vector keyboard = { "QWERTYUIOP", "ASDFGHJKL", "ZXCVBNM" }; pair GetPos(char a) { static pair pos[256]; auto &ret = pos[a]; if(ret.first != 0) return ret; for(int i = 0; i < 3; ++i) for(int j = 0; j < keyboard[i].size(); ++j) if(keyboard[i][j] == a) return ret = {i + 1, j + 1}; assert(false); } int Dist(char a, char b) { auto p = GetPos(a); auto q = GetPos(b); return abs(p.first - q.first) + abs(p.second - q.second); } int Old[256][256], Now[256][256]; int main() { string str; cin >> str; memset(Old, -1, sizeof(Old)); Old['F']['J'] = 0; for(auto &c : str) { memset(Now, -1, sizeof(Now)); for(char a = 'A'; a <= 'Z'; ++a) for(char b = 'A'; b <= 'Z'; ++b) { if(Old[a][b] == -1) continue; if(Now[c][b] == -1 || Now[c][b] > Old[a][b] + Dist(a, c)) Now[c][b] = Old[a][b] + Dist(a, c); if(Now[a][c] == -1 || Now[a][c] > Old[a][b] + Dist(b, c)) Now[a][c] = Old[a][b] + Dist(b, c); } swap(Old, Now); } int ans = 1e9; for(char c = 'A'; c <= 'Z'; ++c) for(char b = 'A'; b <= 'Z'; ++b) if(Old[b][c] != -1) ans = min(ans, Old[b][c]); cout << ans << endl; return 0; }