#include <iostream>
#include <stdio.h>

#define NMAX 101
#define LETTERS 26
#define INF 1 << 20

using namespace std;

char letters[3][11] = {"QWERTYUIOP", "ASDFGHJKL", "ZXCVBNM"};
int posX[LETTERS], posY[LETTERS], dp[NMAX][LETTERS][LETTERS];

int abs(int x) {
    return x < 0 ? -x : x;
}

int manhattan(char c1, char c2) {
    return abs(posX[c1 - 'A'] - posX[c2 - 'A']) + abs(posY[c1 - 'A'] - posY[c2 - 'A']);
}

int minn(int a, int b) {
    return a < b ? a : b;
}

int main() {
    //freopen("in.txt", "r", stdin);

    for (int it = 0; it < 3; ++it) {
        char *p = letters[it];
        int jt = 0;
        while (*p) {
            posX[(*p) - 'A'] = it;
            posY[(*p) - 'A'] = jt;
            ++jt;
            ++p;
        }
    }

    for (int it = 0; it < NMAX; ++it) {
        for (int jt = 0; jt < LETTERS; ++jt) {
            for (int kt = 0; kt < LETTERS; ++kt) {
                dp[it][jt][kt] = INF;
            }
        }
    }

    dp[0]['F' - 'A']['J' - 'A'] = 0;

    string text;
    cin >> text;

    for (int it = 0; it < text.size(); ++it) {
        for (int prevL = 'A'; prevL <= 'Z'; ++prevL) {
            for (int prevR = 'A'; prevR <= 'Z'; ++prevR) {
                dp[it + 1][text[it] - 'A'][prevR - 'A'] = minn(dp[it + 1][text[it] - 'A'][prevR - 'A'], dp[it][prevL - 'A'][prevR - 'A'] + manhattan(prevL, text[it]));
                dp[it + 1][prevL - 'A'][text[it] - 'A'] = minn(dp[it + 1][prevL - 'A'][text[it] - 'A'], dp[it][prevL - 'A'][prevR - 'A'] + manhattan(prevR, text[it]));
            }
        }
    }

    int ans = INF;
    for (int jt = 'A'; jt <= 'Z'; ++jt) {
        for (int kt = 'A'; kt <= 'Z'; ++kt) {
            ans = minn(ans, dp[text.size()][jt - 'A'][kt - 'A']);
        }
    }

    cout << ans;

    return 0;
}