#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int INF = 10000000;
struct point
{
    int x, y;
}; point letter[30], a, b;
int d[105][105],st[105], dr[105];
char s[105];
inline int mod(int x)
{
    if (x < 0)
        return -x;
    return x;
}
inline int dist (int x1, int x2)
{
    a = letter[x1]; b = letter[x2];
    return mod(a.x - b.x) + mod(a.y - b.y);
}
int main()
{
    //freopen("date.in", "r", stdin);
    //freopen("date.out", "w", stdout);
    /// pregenerare ///
    letter[0].x = 2; letter[0].y = 1; /// A
    letter[1].x = 3; letter[1].y = 5; /// B
    letter[2].x = 3; letter[2].y = 3; /// C
    letter[3].x = 2; letter[3].y = 3; /// D
    letter[4].x = 1; letter[4].y = 3; /// E
    letter[5].x = 2; letter[5].y = 4; /// F
    letter[6].x = 2; letter[6].y = 5; /// G
    letter[7].x = 2; letter[7].y = 6; /// H
    letter[8].x = 1; letter[8].y = 8; /// I
    letter[9].x = 2; letter[9].y = 7; /// J
    letter[10].x = 2; letter[10].y = 8; /// K
    letter[11].x = 2; letter[11].y = 9; /// L
    letter[12].x = 3; letter[12].y = 7; /// M
    letter[13].x = 3; letter[13].y = 6; /// N
    letter[14].x = 1; letter[14].y = 9; /// O
    letter[15].x = 1; letter[15].y = 10; /// P
    letter[16].x = 1; letter[16].y = 1; /// Q
    letter[17].x = 1; letter[17].y = 4; /// R
    letter[18].x = 2; letter[18].y = 2; /// S
    letter[19].x = 1; letter[19].y = 5; /// T
    letter[20].x = 1; letter[20].y = 7; /// U
    letter[21].x = 3; letter[21].y = 4; /// V
    letter[22].x = 1; letter[22].y = 2; /// W
    letter[23].x = 3; letter[23].y = 2; /// X
    letter[24].x = 1; letter[24].y = 6; /// Y
    letter[25].x = 3; letter[25].y = 1; /// Z
    int n, ans;

    gets(s + 1);
    n = strlen(s + 1);
    st[0] = 5; dr[0] = 9;
    for (int i = 1; i <= n; ++i)
        st[i] = dr[i] = s[i] - 'A';
    d[0][1] = dist(dr[0], dr[1]);
    d[1][0] = dist(st[0], st[1]);
    for (int pas = 2; pas <= n; ++pas)
    {
        for (int i = 0; i < pas - 1; ++i)
            d[pas][i] = d[pas - 1][i] + dist(st[pas], st[pas - 1]);
        d[pas][pas - 1] = INF;
        for (int i = 0; i < pas - 1; ++i)
            if (d[i][pas - 1] + dist(st[i], st[pas]) < d[pas][pas - 1])
                d[pas][pas - 1] = d[i][pas - 1] + dist(st[i], st[pas]);

        for (int i = 0; i < pas - 1; ++i)
            d[i][pas] = d[i][pas - 1] + dist(dr[pas], dr[pas - 1]);
        d[pas - 1][pas] = INF;
        for (int i = 0; i < pas - 1; ++i)
            if (d[pas - 1][i] + dist(dr[i], dr[pas]) < d[pas - 1][pas])
                d[pas - 1][pas] = d[pas - 1][i] + dist(dr[i], dr[pas]);
    }
    ans = min (d[n - 1][n], d[n][n - 1]);
    for (int i = 0; i < n - 1; ++i)
    {
        ans = min(ans, d[n][i]);
        ans = min(ans, d[i][n]);
    }
    printf("%d\n", ans);

    /*for (int i = 0; i <= n; ++i)
    {
        for (int j = 0; j <= n; ++j)
            printf("%d ", d[i][j]);
        printf("\n");
    }*/
    return 0;
}