input: Write a python function to find the optimal path using the tsp_finder function.
  assert tsp_finder(0, 3, dist_mat) == [0, 1, 2, 3]
  assert tsp_finder(0, 2, dist_mat) == [0, 1, 2]
  assert tsp_finder(1, 3, dist_mat) == [1, 2, 3]
output: def tsp_finder(start, end, dist_mat):
      from itertools import permutations
      
      def calculate_path_length(path, dist_mat):
          length = 0
          for i in range(len(path) - 1):
              length += dist_mat[path[i]][path[i+1]]
          return length
  
      n = len(dist_mat)
      min_path = None
      min_length = float('inf')
      
      for perm in permutations(range(n)):
          if perm[0] == start and perm[-1] == end:
              current_length = calculate_path_length(perm, dist_mat)
              if current_length < min_length:
                  min_length = current_length
                  min_path = perm
                  
      return list(min_path)