#include #include using namespace std; const int nmax = 100; const int omega = 26; const int inf = 1 << 30; pair p[omega + 1]; string s; int d[nmax + 1][omega + 1][omega + 1]; inline int dist (int x, int y) { return abs(p[ x ].first - p[ y ].first) + abs(p[ x ].second - p[ y ].second); } int main() { p['q' - 'a'] = make_pair(1, 1); p['w' - 'a'] = make_pair(1, 2); p['e' - 'a'] = make_pair(1, 3); p['r' - 'a'] = make_pair(1, 4); p['t' - 'a'] = make_pair(1, 5); p['y' - 'a'] = make_pair(1, 6); p['u' - 'a'] = make_pair(1, 7); p['i' - 'a'] = make_pair(1, 8); p['o' - 'a'] = make_pair(1, 9); p['p' - 'a'] = make_pair(1, 10); p['a' - 'a'] = make_pair(2, 1); p['s' - 'a'] = make_pair(2, 2); p['d' - 'a'] = make_pair(2, 3); p['f' - 'a'] = make_pair(2, 4); p['g' - 'a'] = make_pair(2, 5); p['h' - 'a'] = make_pair(2, 6); p['j' - 'a'] = make_pair(2, 7); p['k' - 'a'] = make_pair(2, 8); p['l' - 'a'] = make_pair(2, 9); p['z' - 'a'] = make_pair(3, 1); p['x' - 'a'] = make_pair(3, 2); p['c' - 'a'] = make_pair(3, 3); p['v' - 'a'] = make_pair(3, 4); p['b' - 'a'] = make_pair(3, 5); p['n' - 'a'] = make_pair(3, 6); p['m' - 'a'] = make_pair(3, 7); for (int shp = 0; shp <= nmax; ++ shp) { for (int i = 0; i < omega; ++ i) { for (int j = 0; j < omega; ++ j) { d[ shp ][ i ][ j ] = inf; } } } d[ 0 ]['f' - 'a']['j' - 'a'] = 0; cin >> s; for (int i = 1; i <= (int)s.size(); ++ i) { int x = s[i - 1] - 'A'; for (int j = 0; j < omega; ++ j) { for (int k = 0; k < omega; ++ k) { d[ i ][ j ][ x ] = min(d[ i ][ j ][ x ], d[i - 1][ k ][ x ] + dist(k, j)); d[ i ][ j ][ x ] = min(d[ i ][ j ][ x ], d[i - 1][ j ][ k ] + dist(k, x)); d[ i ][ x ][ j ] = min(d[ i ][ x ][ j ], d[i - 1][ k ][ j ] + dist(k, x)); d[ i ][ x ][ j ] = min(d[ i ][ x ][ j ], d[i - 1][ x ][ k ] + dist(k, j)); } } } int ans = inf; for (int i = 0; i < omega; ++ i) { for (int j = 0; j < omega; ++ j) { ans = min(ans, d[(int)s.size()][ i ][ j ]); } } cout << ans << "\n"; return 0; }