#include using namespace std; #define PER(i,a) for (int i = a-1; i >= 0; i--) #define REP(i,a) for (int i = 0; i < a; i++) #define FOR(i,a,b) for (int i = a; i <= b; i++) #define ROF(i,a,b) for (int i = a; i >= b; i--) #define FOREACH(it,x) for (__typeof((x).begin()) it = (x).begin(); it != (x).end(); it++) #define all(x) (x).begin(),(x).end() #define ll long long #define pb push_back #define mp make_pair #define fi first #define se second #define pii pair #define SZ(x) ((int)(x).size()) const int inf = 1<<20; int dist[26][26]; string ss[3] = { "QWERTYUIOP", "ASDFGHJKL ", "ZXCVBNM "}; pii pos[26]; int dp[101][26][26]; int main() { REP(i,3) REP(j,10) if (isalpha(ss[i][j])) { pos[ss[i][j]-'A'] = mp(i,j); } REP(i,26) REP(j,26) { dist[i][j] = abs(pos[i].fi-pos[j].fi) + abs(pos[i].se-pos[j].se); } string s; cin >> s; REP(i,101) REP(j,26) REP(k,26) dp[i][j][k] = inf; dp[0]['F'-'A']['J'-'A'] = 0; dp[0]['J'-'A']['F'-'A'] = 0; REP(i,SZ(s)) { int c = s[i] - 'A'; REP(j,26) { REP(k,26) { dp[i+1][j][c] = min(dp[i+1][j][c],dp[i][j][k] + dist[k][c]); dp[i+1][c][j] = min(dp[i+1][c][j],dp[i][k][j] + dist[k][c]); } } } int Minim = inf; REP(i,26) REP(j,26) Minim = min(Minim,dp[SZ(s)][i][j]); cout << Minim; }