Change this python depth-first search algorithm to a breadth-first search algorithm:     def dfs(self, target):
        stack = Stack()
        stack.push(self.position)
        path = []

        while not stack.is_empty():
            coordinate = stack.pop()

            if coordinate in path:
                continue
            path.append(coordinate)
            if coordinate is target:
                break

            surroundings = self.get_surrounding_coordinates_from_coordinate(coordinate).values()
            surrounding_coordinates_which_are_known = set(surroundings).intersection(self.visited)
            surroundings_not_already_in_stack = [i for i in surrounding_coordinates_which_are_known if
                                                 i not in stack.list]

            for neighbor in surroundings_not_already_in_stack:
                stack.push(neighbor)

        return path