#include using namespace std; char mat[][25]={"QWERTYUIOP", "ASDFGHJKL", "ZXCVBNM"}; int dp[3][105]; char s[105]; int dist(char,char); pair get_pos(char); int main(){ cin>>s+1; char finger1='F',finger2='J'; for (int i=1;i<=strlen(s+1);i++){ dp[1][i]=min(dp[1][i-1],dp[2][i-1])+dist(finger1,s[i]); dp[2][i]=min(dp[1][i-1],dp[2][i-1])+dist(finger2,s[i]); if (dp[1][i] pos1=get_pos(c1); pair pos2=get_pos(c2); int dx=pos1.first-pos2.first; if (dx<0){ dx=-dx; } int dy=pos1.second-pos2.second; if (dy<0){ dy=-dy; } return dx+dy; } pair get_pos(char c){ pair sol=make_pair(0,0); int ok=0; char *p=strchr(mat[0],c); if (!p){ p=strchr(mat[1],c); } else { ok=1; sol.first=p-mat[0]; sol.second=0; } if (!p){ p=strchr(mat[2],c); } else { if (!ok){ ok=1; sol.first=p-mat[1]; sol.second=1; } } if (!ok){ sol.first=p-mat[2]; sol.second=2; } return sol; }