#include <bits/stdc++.h>
 
#define ll long long 
#define el cout << '\n'
#define ic pair<int, int>
#define fi first 
#define se second
 
using namespace std;
 
const int maxn = 1e6;
const int INF = 1e9;
 
struct Node
{
    ic best_1, best_2;
 
    Node(ic best_1 = ic(INF, '#'), ic best_2 = ic(INF, '#')) :
        best_1(best_1), best_2(best_2) {};
};
 
int n, ans = INF;
Node dp[maxn + 10][5];
string s;
 
char get_char(char c, int v)
{
    v -= 2;
    c += v;
    if (c < 'a')
        c += 'z' - 'a' + 1;
    if (c > 'z')
        c -= 'z' - 'a' + 1;
    return c;
}
void minimize(Node &a, ic b)
{
    if (a.best_1.fi >= b.fi)
    {
        if (a.best_1.se != b.se)
            a.best_2 = a.best_1;
        a.best_1 = b;
    }
    else if (a.best_2.fi >= b.fi && a.best_1.se != b.se)
        a.best_2 = b;
}
 
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    if (fopen("REMOVEPALIN.INP", "r"))
    {
        freopen("REMOVEPALIN.INP", "r", stdin);
        freopen("REMOVEPALIN.OUT", "w", stdout);
    }
 
    cin >> s;
    n = s.size();
    s = ' ' + s;
    if (n == 1)
        return cout << 0, 0;
    for (int y = 0; y <= 4; y++)
        for (int x = 0; x <= 4; x++)
            if (get_char(s[2], y) != get_char(s[1], x))
                minimize(dp[2][y], ic(abs(y - 2) + abs(x - 2), get_char(s[1], x)));
    for (int i = 3; i <= n; i++)
    {
        for (int y = 0; y <= 4; y++)
        {
            for (int x = 0; x <= 4; x++)
            {
                if (get_char(s[i - 1], x) == get_char(s[i], y))
                    continue;
                if (get_char(s[i], y) != dp[i - 1][x].best_1.se)
                    minimize(dp[i][y], ic(dp[i - 1][x].best_1.fi + abs(y - 2), get_char(s[i - 1], x)));
                if (get_char(s[i], y) != dp[i - 1][x].best_2.se)
                    minimize(dp[i][y], ic(dp[i - 1][x].best_2.fi + abs(y - 2), get_char(s[i - 1], x)));
            }
        }
    }
    // for (int i = 2; i <= n; i++)
    //     for (int y = 0; y <= 4; y++)
    //         cout << i << ' ' << get_char(s[i], y) << ' ' << dp[i][y].best_1.fi << ' ' << (char)dp[i][y].best_1.se << ' ' << dp[i][y].best_2.fi << ' ' << (char)dp[i][y].best_2.se, el;
    for (int x = 0; x <= 4; x++)
        ans = min(ans, dp[n][x].best_1.fi);
    cout << ans;
}
				I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSBlbCBjb3V0IDw8ICdcbicKI2RlZmluZSBpYyBwYWlyPGludCwgaW50PgojZGVmaW5lIGZpIGZpcnN0IAojZGVmaW5lIHNlIHNlY29uZAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtYXhuID0gMWU2Owpjb25zdCBpbnQgSU5GID0gMWU5OwoKc3RydWN0IE5vZGUKewogICAgaWMgYmVzdF8xLCBiZXN0XzI7CiAgICAKICAgIE5vZGUoaWMgYmVzdF8xID0gaWMoSU5GLCAnIycpLCBpYyBiZXN0XzIgPSBpYyhJTkYsICcjJykpIDoKICAgICAgICBiZXN0XzEoYmVzdF8xKSwgYmVzdF8yKGJlc3RfMikge307Cn07CgppbnQgbiwgYW5zID0gSU5GOwpOb2RlIGRwW21heG4gKyAxMF1bNV07CnN0cmluZyBzOwoKY2hhciBnZXRfY2hhcihjaGFyIGMsIGludCB2KQp7CiAgICB2IC09IDI7CiAgICBjICs9IHY7CiAgICBpZiAoYyA8ICdhJykKICAgICAgICBjICs9ICd6JyAtICdhJyArIDE7CiAgICBpZiAoYyA+ICd6JykKICAgICAgICBjIC09ICd6JyAtICdhJyArIDE7CiAgICByZXR1cm4gYzsKfQp2b2lkIG1pbmltaXplKE5vZGUgJmEsIGljIGIpCnsKICAgIGlmIChhLmJlc3RfMS5maSA+PSBiLmZpKQogICAgewogICAgICAgIGlmIChhLmJlc3RfMS5zZSAhPSBiLnNlKQogICAgICAgICAgICBhLmJlc3RfMiA9IGEuYmVzdF8xOwogICAgICAgIGEuYmVzdF8xID0gYjsKICAgIH0KICAgIGVsc2UgaWYgKGEuYmVzdF8yLmZpID49IGIuZmkgJiYgYS5iZXN0XzEuc2UgIT0gYi5zZSkKICAgICAgICBhLmJlc3RfMiA9IGI7Cn0KCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBpZiAoZm9wZW4oIlJFTU9WRVBBTElOLklOUCIsICJyIikpCiAgICB7CiAgICAgICAgZnJlb3BlbigiUkVNT1ZFUEFMSU4uSU5QIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiUkVNT1ZFUEFMSU4uT1VUIiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIGNpbiA+PiBzOwogICAgbiA9IHMuc2l6ZSgpOwogICAgcyA9ICcgJyArIHM7CiAgICBpZiAobiA9PSAxKQogICAgICAgIHJldHVybiBjb3V0IDw8IDAsIDA7CiAgICBmb3IgKGludCB5ID0gMDsgeSA8PSA0OyB5KyspCiAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPD0gNDsgeCsrKQogICAgICAgICAgICBpZiAoZ2V0X2NoYXIoc1syXSwgeSkgIT0gZ2V0X2NoYXIoc1sxXSwgeCkpCiAgICAgICAgICAgICAgICBtaW5pbWl6ZShkcFsyXVt5XSwgaWMoYWJzKHkgLSAyKSArIGFicyh4IC0gMiksIGdldF9jaGFyKHNbMV0sIHgpKSk7CiAgICBmb3IgKGludCBpID0gMzsgaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPD0gNDsgeSsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPD0gNDsgeCsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoZ2V0X2NoYXIoc1tpIC0gMV0sIHgpID09IGdldF9jaGFyKHNbaV0sIHkpKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaWYgKGdldF9jaGFyKHNbaV0sIHkpICE9IGRwW2kgLSAxXVt4XS5iZXN0XzEuc2UpCiAgICAgICAgICAgICAgICAgICAgbWluaW1pemUoZHBbaV1beV0sIGljKGRwW2kgLSAxXVt4XS5iZXN0XzEuZmkgKyBhYnMoeSAtIDIpLCBnZXRfY2hhcihzW2kgLSAxXSwgeCkpKTsKICAgICAgICAgICAgICAgIGlmIChnZXRfY2hhcihzW2ldLCB5KSAhPSBkcFtpIC0gMV1beF0uYmVzdF8yLnNlKQogICAgICAgICAgICAgICAgICAgIG1pbmltaXplKGRwW2ldW3ldLCBpYyhkcFtpIC0gMV1beF0uYmVzdF8yLmZpICsgYWJzKHkgLSAyKSwgZ2V0X2NoYXIoc1tpIC0gMV0sIHgpKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAvLyBmb3IgKGludCBpID0gMjsgaSA8PSBuOyBpKyspCiAgICAvLyAgICAgZm9yIChpbnQgeSA9IDA7IHkgPD0gNDsgeSsrKQogICAgLy8gICAgICAgICBjb3V0IDw8IGkgPDwgJyAnIDw8IGdldF9jaGFyKHNbaV0sIHkpIDw8ICcgJyA8PCBkcFtpXVt5XS5iZXN0XzEuZmkgPDwgJyAnIDw8IChjaGFyKWRwW2ldW3ldLmJlc3RfMS5zZSA8PCAnICcgPDwgZHBbaV1beV0uYmVzdF8yLmZpIDw8ICcgJyA8PCAoY2hhcilkcFtpXVt5XS5iZXN0XzIuc2UsIGVsOwogICAgZm9yIChpbnQgeCA9IDA7IHggPD0gNDsgeCsrKQogICAgICAgIGFucyA9IG1pbihhbnMsIGRwW25dW3hdLmJlc3RfMS5maSk7CiAgICBjb3V0IDw8IGFuczsKfQ==