#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(i, a, n) for (int i = a; i <= n; ++i) #define FORN(a, n) for (int i = a; i < n; ++i) #define ROF(i, n, a) for (int i = n; i >= a; i--) #define ROFN(n, a) for (int i = n - 1; i >= a; i--) #define FIT(i, v) for (auto &i : v) #define pb push_back #define mp make_pair #define mt make_touple #define all(x) (x).begin(), (x).end() #define fi first #define se second #define sz(x) ((int)(x).size()) #define log log2 typedef long long ll; typedef pair pii; const long long mod = 1000000007; int ans; string s; pair v[1111]; int manhattan(pair a, pair b) { return abs(a.first - b.first) + abs(a.second - b.second); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> s; v['Q'] = { 1, 1 }; v['W'] = { 1, 2 }; v['E'] = { 1, 3 }; v['R'] = { 1, 4 }; v['T'] = { 1, 5 }; v['Y'] = { 1, 6 }; v['U'] = { 1, 7 }; v['I'] = { 1, 8 }; v['O'] = { 1, 9 }; v['P'] = { 1, 10 }; v['A'] = { 2, 1 }; v['S'] = { 2, 2 }; v['D'] = { 2, 3 }; v['F'] = { 2, 4 }; v['G'] = { 2, 5 }; v['H'] = { 2, 6 }; v['J'] = { 2, 7 }; v['K'] = { 2, 8 }; v['L'] = { 2, 9 }; v['Z'] = { 3, 1 }; v['X'] = { 3, 2 }; v['C'] = { 3, 3 }; v['V'] = { 3, 4 }; v['B'] = { 3, 5 }; v['N'] = { 3, 6 }; v['M'] = { 3, 7 }; pii finger1 = v['F']; pii finger2 = v['J']; FORN(0, s.size()) { int man1 = manhattan(finger1, v[s[i]]); int man2 = manhattan(finger2, v[s[i]]); ans += min(man1, man2); if (man1 < man2) { finger1 = v[s[i]]; } else { finger2 = v[s[i]]; } } cout << ans; return 0; }