def find(a,b,cnt): m,n=len(a),len(b) def dfs(i,j,k): #print(i,j,k) if i==m or j==n: return 0 ans=0 if a[i]==b[j]: ans= 1+dfs(i+1,j+1,k) else: t = abs(ord(a[i])-ord(b[j])) r=min(t,26-t) #print(r) if k+r<=cnt: ans=max(ans,1+dfs(i+1,j+1,k+r)) ans=max(ans,dfs(i+1,j,k),dfs(i,j+1,k)) return ans return dfs(0,0,0) print(find("fpelqanxyk","hackerrank",6))