#include #define pb push_back #define NMAX 1005 #define ll long long #define x first #define y second #define INF 0x3f3f3f3f #define MOD 3210121 using namespace std; //ifstream fin("fisier.in"); //ofstream fout("fisier.out"); char s[105]; char jeg[30]="QWERTYUIOPASDFGHJKLZXCVBNM"; int dp[105][30][30]; pair v[30]; inline int dist(int i, int j) { return abs(v[i].x-v[j].x)+abs(v[i].y-v[j].y); } int main() { int i,k,j,n,ans=INF; cin>>(s+1); n=strlen(s+1); for(i=1;i<=n;++i) s[i]-='A'; for(i=0;i<10;++i) v[jeg[i]-'A']={0,i}; for(i=0;i<9;++i) v[jeg[i+10]-'A']={1,i}; for(i=0;i<7;++i) v[jeg[i+19]-'A']={2,i}; for(i=0;i<26;++i) for(j=0;j<26;++j) dp[0][i][j]=INF; memset(dp,INF,sizeof(dp)); dp[0]['F'-'A']['J'-'A']=dp[0]['J'-'A']['F'-'A']=0; for(i=1;i<=n;++i) { for(j=0;j<26;++j) { for(k=0;k<26;++k) { dp[i][s[i]][k]=min(dp[i][s[i]][k],dp[i-1][j][k]+dist((int)s[i],j)); dp[i][j][s[i]]=min(dp[i][j][s[i]],dp[i-1][j][k]+dist((int)s[i],k)); if(i==n) ans=min(ans,min(dp[i][s[i]][k],dp[i][j][s[i]])); } } } printf("%d\n",ans); return 0; }