This seems a shorter solution:
def findMove(original,result):
n =if len(original)
if n != len(result):
return # different length
# find common head
i=0
while i<n and original[i] == result[i]:
diff = [x for x,(c,d) in ienumerate(zip(original,result)) +=if 1c!=d]
if i==nnot diff:
return # equal strings
# find common tail
j=n-1
while original[j] == result[j]:
i,j -= 1
# two possibilities: i->j or jdiff[0],diff[->i1]
if original[i+1:j+1] == result[i:j] and original[i] == result[j]:
return (i,j)
if original[i:j] == result[i+1:j+1] and original[j] == result[i]:
return (j,i)
PS: this works also if the items are non unique.