from __future__ import annotations

import typing
from collections.abc import Iterable

import numpy as np

__lowerCamelCase					:	List[Any]       =  typing.Union[Iterable[float], Iterable[int], np.ndarray]  # noqa: UP007
__lowerCamelCase					:	List[Any]       =  typing.Union[np.floataa, int, float]  # noqa: UP007




def       _snake_case	(   lowerCAmelCase							:   Vector   , lowerCAmelCase							:   Vector	):
		"""simple docstring"""







		return np.sqrt(np.sum((np.asarray(lowerCAmelCase	) - np.asarray(lowerCAmelCase	)) ** 2	)	)




def       _snake_case	(   lowerCAmelCase							:   Vector   , lowerCAmelCase							:   Vector	):
		"""simple docstring"""







		return sum((va - va) ** 2 for va, va in zip(lowerCAmelCase   , lowerCAmelCase	)	) ** (1 / 2)


if __name__ == "__main__":




		def       _snake_case	(   ):
				"""simple docstring"""







				from timeit import timeit

				print("Without Numpy"	)
				print(
				    timeit(
				        "euclidean_distance_no_np([1, 2, 3], [4, 5, 6])"   , number=1_0_0_0_0   , globals=globals()   , )	)
				print("With Numpy"	)
				print(
				    timeit(
				        "euclidean_distance([1, 2, 3], [4, 5, 6])"   , number=1_0_0_0_0   , globals=globals()   , )	)







		benchmark()







from __future__ import annotations



def _a				(	lowerCamelCase:   list[int | str] )	->						None:







      '''simple docstring'''






      create_state_space_tree(lowerCamelCase					,				[]					,				0					,				[0 for i in range(len(lowerCamelCase ) )] )



def _a				(	lowerCamelCase:   list[int | str]					,				lowerCamelCase:   list[int | str]					,				lowerCamelCase:   int					,				lowerCamelCase:   list[int]					,				)	->						None:







      '''simple docstring'''






      if index == len(lowerCamelCase ):
            print(lowerCamelCase )
            return

      for i in range(len(lowerCamelCase ) ):
            if not index_used[i]:
                  current_sequence.append(sequence[i] )
                  __A          =				True
                  create_state_space_tree(lowerCamelCase					,				lowerCamelCase					,				index + 1					,				lowerCamelCase )
                  current_sequence.pop()
                  __A          =				False
snake_case__					:							list[int | str]													=     [3, 1, 2, 4]
generate_all_permutations(sequence)

snake_case__					:							list[int | str]													=     ["A", "B", "C"]







generate_all_permutations(sequence_a)





