#include #include #include using namespace std; struct punct {int x, y;}; map v; void initializare() { v['Q'].x = 1; v['Q'].y = 1; v['W'].x = 2; v['W'].y = 1; v['E'].x = 3; v['E'].y = 1; v['R'].x = 4; v['R'].y = 1; v['T'].x = 5; v['T'].y = 1; v['Y'].x = 6; v['Y'].y = 1; v['U'].x = 7; v['U'].y = 1; v['I'].x = 8; v['I'].y = 1; v['O'].x = 9; v['O'].y = 1; v['P'].x = 10;v['P'].y = 1; v['A'].x = 1; v['A'].y = 2; v['S'].x = 2; v['S'].y = 2; v['D'].x = 3; v['D'].y = 2; v['F'].x = 4; v['F'].y = 2; v['G'].x = 5; v['G'].y = 2; v['H'].x = 6; v['H'].y = 2; v['J'].x = 7; v['J'].y = 2; v['K'].x = 8; v['K'].y = 2; v['L'].x = 9; v['L'].y = 2; v['Z'].x = 1; v['Z'].y = 3; v['X'].x = 2; v['X'].y = 3; v['C'].x = 3; v['C'].y = 3; v['V'].x = 4; v['V'].y = 3; v['B'].x = 5; v['B'].y = 3; v['N'].x = 6; v['N'].y = 3; v['M'].x = 7; v['M'].y = 3; } char c[105]; int cost[105]; int dist (int ax, int ay, int bx, int by) { if (ax < bx) swap(ax, bx); if (ay < by) swap(ay, by); return ax - bx + ay - by; } int sum; int main() { initializare(); char tmp1 = 'F', tmp2 = 'J'; char k; int i; int i1 = 0, i2 = 0; int x1 = v['F'].x, x2 = v['J'].x , y1 = v['F'].y , y2 = v['J'].y, xt, yt; cin.getline(c, 102); int dist1, dist2; int length = strlen(c); for (i = 0; i < length; ++i) { k = c[i]; x1 = v[tmp1].x; y1 = v[tmp1].y; x2 = v[tmp2].x; y2 = v[tmp2].y; xt = v[k].x; yt = v[k].y; dist1 = dist(x1, y1, xt, yt); dist2 = dist(x2, y2, xt, yt); if (cost[i] + dist1 < cost[i] + dist2) { cost[i + 1] = cost[i] + dist1; tmp1 = k; i1 = i + 1; } else { cost[i + 1] = cost[i] + dist2; tmp2 = k; i2 = i + 1; } } cout << cost[length]; return 0; }