input: Write a function to perform K nearest Neighbors algorithm on the given data using the euclidean distance function.
  assert knn([[1, 2], [2, 3], [3, 4]], [0, 1, 1], [2, 2], 2) == [0, 1]
  assert knn([[1, 1], [2, 2], [3, 3]], [1, 1, 0], [3, 3], 1) == [0]
  assert knn([[0, 0], [1, 1], [2, 2]], [1, 2, 3], [1, 0], 2) == [1, 2]
output: def knn(data, labels, point, k):
      def euclidean_distance(p1, p2):
          return sum((x - y) ** 2 for x, y in zip(p1, p2)) ** 0.5
  
      distances = [(euclidean_distance(point, data_point), label) for data_point, label in zip(data, labels)]
      distances.sort(key=lambda x: x[0])
      nearest_neighbors = [label for _, label in distances[:k]]
      return nearest_neighbors