#include #include #include using namespace std; char tast[32][32] = { {0}, {"qqwertyuiop"}, {"aasdfghjkl"}, {"zzxcvbnm"} }; int dp[32][32], cdp[32][32], cost[32][32]; char str[128]; int aabs (int x) { return max (x, -x); } int main () { //freopen ("file.in", "r", stdin); for (int ia = 'a'; ia <= 'z'; ++ia) for (int ib = 'a'; ib <= 'z'; ++ib) { int p1 = -1, p2; for (int j = 1; j <= 3 && p1 == -1; ++j) for (int h = 1; h <= 15; ++h) if (tast[j][h] == ia) { p1 = j; p2 = h; break; } for (int j = 1; j <= 3 && p1 != -1; ++j) for (int h = 1; h <= 15; ++h) if (tast[j][h] == ib) { cost[ia - 'a'][ib - 'a'] = aabs (j - p1) + aabs (h - p2); p1 = -1; break; } } gets (str + 1); int n = strlen (str + 1); for (int i = 0; i <= 'z' - 'a'; ++i) for (int j = 0; j <= 'z' - 'a'; ++j) cdp[i][j] = 2000000000; cdp['f' - 'a']['j' - 'a'] = 0; int mi; for (int h = 1; h <= n; ++h) { mi = 2000000000; str[h] -= 'A'; for (int i = 0; i <= 'z' - 'a'; ++i) for (int j = 0; j <= 'z' - 'a'; ++j) dp[i][j] = cdp[i][j], cdp[i][j] = 2000000000; for (int i = 0; i <= 'z' - 'a'; ++i) for (int j = 0; j <= 'z' - 'a'; ++j) { cdp[str[h]][j] = min (cdp[str[h]][j], dp[i][j] + cost[i][str[h]]); cdp[i][str[h]] = min (cdp[i][str[h]], dp[i][j] + cost[j][str[h]]); mi = min (mi, min (cdp[str[h]][j], cdp[i][str[h]])); } } printf ("%d\n", mi); return 0; }