In this HackerEarth (Problem A) Pikachu and the Game of Strings problem solution, Pikachu has recently learnt a new move s. He knows he can work hard and convert it into a stronger move t. Both the moves s and t contain the same number of letters.
In a single day, Pikachu can increase any letter of move s by one, that is, in a single day, he can convert letter A to B, C to D, M to N and so on. He can also convert letter Z to letter A.
Pikachu just realized he also has a hidden ability. It can help him increase any letter of move s by 13, that is, in a single day, he can convert letter A to letter N, B into O, M into Z, O into B and so on.
Now Pikachu wants to know the minimum number of days in which he can convert the move s into move t ?
HackerEarth ( Problem A ) Pikachu and the Game of Strings problem solution.
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
string s,t;
cin>>s>>t;
int ans=0;
for(int i=0;i<n;i++){
ans+=min((t[i]-s[i]+26)%26,1+(t[i]-(s[i]+13)+52)%26);
}
cout<<ans<<endl;
}
Second solution
n = int(raw_input())
s = raw_input()
t = raw_input()
def f(g):
x = ord(g[0])
y = ord(g[1])
return min((y-x)%26, (y-(x+13)%26)%26 + 1)
print sum(map(f, zip(s,t)))