#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>

using namespace std;

struct poz {
    int x, y;
} V[30];

struct depe {
    int lft, rgt, cost;
} dp[105][3];

char line1[] = "QWERTYUIOP";
char line2[] = "ASDFGHJKL";
char line3[] = "ZXCVBNM";
char sir[105];

int dist(int a, int b) {
    return abs(V[a].x - V[b].x) + abs(V[a].y - V[b].y);
}

int main() {
    cin >> (sir + 1);

    int lg = strlen(sir + 1);

    for(int i = 0; i < strlen(line1); ++i) {
        V[line1[i] - 'A'].x = 1;
        V[line1[i] - 'A'].y = i;
    }

    for(int i = 0; i < strlen(line2); ++i) {
        V[line2[i] - 'A'].x = 2;
        V[line2[i] - 'A'].y = i;
    }

    for(int i = 0; i < strlen(line3); ++i) {
        V[line3[i] - 'A'].x = 3;
        V[line3[i] - 'A'].y = i;
    }

    dp[0][0].cost = 0;
    dp[0][0].lft = 'F' - 'A';
    dp[0][0].rgt = 'J' - 'A';

    dp[0][1].cost = 0;
    dp[0][1].lft = 'F' - 'A';
    dp[0][1].rgt = 'J' - 'A';

    for(int i = 1; i <= lg; ++i) {
        int elem = sir[i] - 'A';

        if(dp[i - 1][0].cost + dist(dp[i - 1][0].lft, elem) <= dp[i - 1][1].cost + dist(dp[i - 1][1].lft, elem)) {
            dp[i][0].cost = dp[i - 1][0].cost + dist(dp[i - 1][0].lft, elem);
            dp[i][0].lft = elem;
            dp[i][0].rgt = dp[i - 1][0].rgt;
        }
        else {
            dp[i][0].cost = dp[i - 1][1].cost + dist(dp[i - 1][1].lft, elem);
            dp[i][0].lft = elem;
            dp[i][0].rgt = dp[i - 1][1].rgt;;
        }

        if(dp[i - 1][0].cost + dist(dp[i - 1][0].rgt, elem) <= dp[i - 1][1].cost + dist(dp[i - 1][1].rgt, elem)) {
            dp[i][1].cost = dp[i - 1][0].cost + dist(dp[i - 1][0].rgt, elem);
            dp[i][1].rgt = elem;
            dp[i][1].lft = dp[i - 1][0].lft;
        }
        else {
            dp[i][1].cost = dp[i - 1][1].cost + dist(dp[i - 1][1].rgt, elem);
            dp[i][1].rgt = elem;
            dp[i][1].lft = dp[i - 1][1].lft;
        }
    }

    cout << min(dp[lg][0].cost, dp[lg][1].cost) << '\n';

    return 0;
}