#include <bits/stdc++.h>
#define FOR(i, a, b) for (int i = a; i <= b; ++i)
#define FORD(i, a, b) for (int i = a; i >= b; --i)
#define ll long long
using namespace std;
const int N = 1e6 + 5;
string s;
int n, dp[N][5][5], change[N][5], cost[26][26], ans = 2e9;
void nhap() {
cin >> s;
n = s.size();
s = " " + s;
}
void mn(int &a, int b) {
if (a > b) a = b;
}
void backtrack(int pos, int t, string cur) {
if (pos > n) {
ans = min(ans, t);
return;
}
FOR(i, 0, 25) {
char c = 'a' + i;
int len = cur.size();
if (len >= 1 && cur[len - 1] == c) continue;
if (len >= 2 && cur[len - 2] == c) continue;
backtrack(pos + 1, t + cost[::s[pos] - 'a'][i], cur + c);
}
}
void trau() {
backtrack(1, 0, "");
cout << ans;
}
void giai() {
memset(dp, 0x3f, sizeof dp);
FOR(i, 0, 25) FOR(j, 0, 25) cost[i][j] = min(abs(i - j), (26 - abs(i - j)) % 26);
if (n <= 5) {
trau();
return;
}
FOR(i, 1, n) FOR(j, -2, 2) change[i][j + 2] = (s[i] - 'a' + j + 26) % 26;
FOR(i, 0, 4) FOR(j, 0, 4) if (change[2][i] != change[1][j])
dp[2][i][j] = cost[s[2]- 'a'][change[2][i]] + cost[s[1] - 'a'][change[1][j]];
FOR(i, 2, n - 1) FOR(j, 0, 4) FOR(k, 0, 4) if (change[i][j] != change[i - 1][k])
FOR(t, 0, 4) if (change[i + 1][t] != change[i][j] && change[i + 1][t] != change[i - 1][k])
mn(dp[i + 1][t][j], dp[i][j][k] + cost[s[i + 1] - 'a'][change[i + 1][t]]);
FOR(i, 0, 4) FOR(j, 0, 4) if (change[n][i] != change[n - 1][j]) ans = min(ans, dp[n][i][j]);
cout << ans;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
#define name "removepalin"
if (fopen(name".inp", "r")) {
freopen(name".inp", "r", stdin);
freopen(name".out", "w", stdout);
}
nhap();
giai();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIEZPUihpLCBhLCBiKSBmb3IgKGludCBpID0gYTsgaSA8PSBiOyArK2kpCiNkZWZpbmUgRk9SRChpLCBhLCBiKSBmb3IgKGludCBpID0gYTsgaSA+PSBiOyAtLWkpCiNkZWZpbmUgbGwgbG9uZyBsb25nCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSAxZTYgKyA1OwpzdHJpbmcgczsKaW50IG4sIGRwW05dWzVdWzVdLCBjaGFuZ2VbTl1bNV0sIGNvc3RbMjZdWzI2XSwgYW5zID0gMmU5OwoKdm9pZCBuaGFwKCkgewogICAgY2luID4+IHM7CiAgICBuID0gcy5zaXplKCk7CiAgICBzID0gIiAiICsgczsKfQoKdm9pZCBtbihpbnQgJmEsIGludCBiKSB7CiAgICBpZiAoYSA+IGIpIGEgPSBiOwp9Cgp2b2lkIGJhY2t0cmFjayhpbnQgcG9zLCBpbnQgdCwgc3RyaW5nIGN1cikgewogICAgaWYgKHBvcyA+IG4pIHsKICAgICAgICBhbnMgPSBtaW4oYW5zLCB0KTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgRk9SKGksIDAsIDI1KSB7CiAgICAgICAgY2hhciBjID0gJ2EnICsgaTsKICAgICAgICBpbnQgbGVuID0gY3VyLnNpemUoKTsKICAgICAgICBpZiAobGVuID49IDEgJiYgY3VyW2xlbiAtIDFdID09IGMpIGNvbnRpbnVlOyAgCiAgICAgICAgaWYgKGxlbiA+PSAyICYmIGN1cltsZW4gLSAyXSA9PSBjKSBjb250aW51ZTsKCiAgICAgICAgYmFja3RyYWNrKHBvcyArIDEsIHQgKyBjb3N0Wzo6c1twb3NdIC0gJ2EnXVtpXSwgY3VyICsgYyk7CiAgICB9Cn0KCnZvaWQgdHJhdSgpIHsKICAgIGJhY2t0cmFjaygxLCAwLCAiIik7CiAgICBjb3V0IDw8IGFuczsKfQoKdm9pZCBnaWFpKCkgewogICAgbWVtc2V0KGRwLCAweDNmLCBzaXplb2YgZHApOwogICAgRk9SKGksIDAsIDI1KSBGT1IoaiwgMCwgMjUpIGNvc3RbaV1bal0gPSBtaW4oYWJzKGkgLSBqKSwgKDI2IC0gYWJzKGkgLSBqKSkgJSAyNik7CgogICAgaWYgKG4gPD0gNSkgewogICAgICAgIHRyYXUoKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgRk9SKGksIDEsIG4pIEZPUihqLCAtMiwgMikgY2hhbmdlW2ldW2ogKyAyXSA9IChzW2ldIC0gJ2EnICsgaiArIDI2KSAlIDI2OwogICAgRk9SKGksIDAsIDQpIEZPUihqLCAwLCA0KSBpZiAoY2hhbmdlWzJdW2ldICE9IGNoYW5nZVsxXVtqXSkKICAgICAgICBkcFsyXVtpXVtqXSA9IGNvc3Rbc1syXS0gJ2EnXVtjaGFuZ2VbMl1baV1dICsgY29zdFtzWzFdIC0gJ2EnXVtjaGFuZ2VbMV1bal1dOwoKICAgIEZPUihpLCAyLCBuIC0gMSkgRk9SKGosIDAsIDQpIEZPUihrLCAwLCA0KSBpZiAoY2hhbmdlW2ldW2pdICE9IGNoYW5nZVtpIC0gMV1ba10pCiAgICAgICAgRk9SKHQsIDAsIDQpIGlmIChjaGFuZ2VbaSArIDFdW3RdICE9IGNoYW5nZVtpXVtqXSAmJiBjaGFuZ2VbaSArIDFdW3RdICE9IGNoYW5nZVtpIC0gMV1ba10pCiAgICAgICAgICAgIG1uKGRwW2kgKyAxXVt0XVtqXSwgZHBbaV1bal1ba10gKyBjb3N0W3NbaSArIDFdIC0gJ2EnXVtjaGFuZ2VbaSArIDFdW3RdXSk7CgogICAgRk9SKGksIDAsIDQpIEZPUihqLCAwLCA0KSBpZiAoY2hhbmdlW25dW2ldICE9IGNoYW5nZVtuIC0gMV1bal0pIGFucyA9IG1pbihhbnMsIGRwW25dW2ldW2pdKTsKICAgIGNvdXQgPDwgYW5zOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKCiAgICAjZGVmaW5lIG5hbWUgInJlbW92ZXBhbGluIgoKICAgIGlmIChmb3BlbihuYW1lIi5pbnAiLCAiciIpKSB7CiAgICAgICAgZnJlb3BlbihuYW1lIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKG5hbWUiLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KCiAgICBuaGFwKCk7CiAgICBnaWFpKCk7CgogICAgcmV0dXJuIDA7Cn0K