




def 							_UpperCAmelCase  (UpperCamelCase_ : str      ,    UpperCamelCase_ : List[Any]      ,    UpperCamelCase_ : str=False       ):
				'''simple docstring'''

				if isinstance(UpperCamelCase_      ,    UpperCamelCase_       ) and isinstance(UpperCamelCase_      ,    UpperCamelCase_       ):
								_lowerCAmelCase    :    Union[str, Any]										=      len(set_a.intersection(UpperCamelCase_       )       )

								if alternative_union:
												_lowerCAmelCase    :    List[Any]										=      len(UpperCamelCase_       ) + len(UpperCamelCase_       )
								else:
												_lowerCAmelCase    :    List[Any]										=      len(set_a.union(UpperCamelCase_       )       )

								return intersection / union

				if isinstance(UpperCamelCase_      ,    (list, tuple)       ) and isinstance(UpperCamelCase_      ,    (list, tuple)       ):
								_lowerCAmelCase    :    str										=      [element for element in set_a if element in set_b]

								if alternative_union:
												_lowerCAmelCase    :    Tuple										=      len(UpperCamelCase_       ) + len(UpperCamelCase_       )
												return len(UpperCamelCase_       ) / union
								else:
												_lowerCAmelCase    :    Tuple										=      set_a + [element for element in set_b if element not in set_a]
												return len(UpperCamelCase_       ) / len(UpperCamelCase_       )

								return len(UpperCamelCase_       ) / len(UpperCamelCase_       )
				return None


if __name__ == "__main__":
	_lowerCamelCase      :  Any      						=						{"a", "b", "c", "d", "e"}
	_lowerCamelCase      :  List[str]      						=						{"c", "d", "e", "f", "h", "i"}
	print(jaccard_similarity(set_a, set_b))







def 							_UpperCAmelCase  (UpperCamelCase_ : int       ):
				'''simple docstring'''
				_lowerCAmelCase    :    int										=      n ** (1 / 3)
				return (val * val * val) == n


if __name__ == "__main__":
	print(perfect_cube(2_7))
	print(perfect_cube(4))

