#include <iostream>
#include <algorithm>
#include <string>

#define INF 200001
#define ll long long
using namespace std;

struct Let { int x, y; } let[200];

string S;
int conf[2][200];

int Dist(char a, char b)
{
	return abs(let[a].x - let[b].x) + abs(let[a].y - let[b].y);
}

int main()
{
	S = "QWERTYUIOP";
	for (int i = 0; i < S.size(); i++)
		let[S[i]].x = 0, let[S[i]].y = i;

	S = "ASDFGHJKL";
	for (int i = 0; i < S.size(); i++)
		let[S[i]].x = 1, let[S[i]].y = i;

	S = "ZXCVBNM";
	for (int i = 0; i < S.size(); i++)
		let[S[i]].x = 2, let[S[i]].y = i;

	cin >> S;

	for (int i = 'A'; i <= 'Z'; i++)
		conf[1][i] = INF;
	
	char last = 'F';
	conf[1]['J'] = 0;

	for (int i = 0; i < S.size(); i++)
	{
		conf[i % 2][S[i]] = INF;

		int best = INF; char le;
		conf[i % 2][last] = INF;
		for (int j = 'A'; j <= 'Z'; j++)
			if (j != last)
			{
				if (best > conf[!(i % 2)][j] + Dist(j, S[i]))
				{
					best = conf[!(i % 2)][j] + Dist(j, S[i]);
					le = j;
				}
				conf[i % 2][j] = conf[!(i % 2)][j] + Dist(last, S[i]);
			}

		conf[i % 2][last] = best;
		last = S[i];
	}

	int best = INF;
	for (int i = 'A'; i <= 'Z'; i++)
		best = min(best, conf[(S.size() - 1) % 2][i]);

	cout << best;
	return 0;
}