This function uses recursion to find the easiest way for a knight to get from one place on the chess board to another the recursive function locate returns None. Please explain why
def knight(p1, p2):
    cord1 = [ord(p1[0])-97, int(p1[1])-1]
    cord2 = [ord(p2[0])-97, int(p2[1])-1]
    
    def locate(legal_moves, endpoint, counter):
        if endpoint in legal_moves:
            print(counter)
            return counter
        else:
            for move in legal_moves:
                semi_legal_moves = [
                [move[0]+2,move[1]+1], 
                [move[0]+1,move[1]+2], 
                [move[0]+2,move[1]-1], 
                [move[0]+1,move[1]-1], 
                [move[0]-1,move[1]+2], 
                [move[0]-2,move[1]+1], 
                [move[0]-1,move[1]-2],
                [move[0]-2,move[1]-1,]]
                legal_moves = legal_moves + [i for i in semi_legal_moves if i[0] >=0 and i[0] <8 and i[1] >=0 and i[1] <8]
            locate(legal_moves, endpoint, counter +1)
    return locate([cord1], cord2, 0)
print(knight('a1', 'c1'))
 
    