def   SCREAMING_SNAKE_CASE_	(		snake_case__  ,    snake_case__  ,    snake_case__=False				)	->      int:

							if isinstance(snake_case__  ,    snake_case__				) and isinstance(snake_case__  ,    snake_case__				):
														lowerCAmelCase      						=						len(set_a.intersection(snake_case__				)				)

														if alternative_union:
																					lowerCAmelCase      						=						len(snake_case__				) + len(snake_case__				)
														else:
																					lowerCAmelCase      						=						len(set_a.union(snake_case__				)				)

														return intersection / union

							if isinstance(snake_case__  ,    (list, tuple)				) and isinstance(snake_case__  ,    (list, tuple)				):
														lowerCAmelCase      						=						[element for element in set_a if element in set_b]

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

														return len(snake_case__				) / len(snake_case__				)
							return None


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









import functools


def 					_a							(					lowerCAmelCase    ,						lowerCAmelCase )->	int:

		# Validation
		if not isinstance(lowerCAmelCase    ,						lowerCAmelCase ) or not all(isinstance(lowerCAmelCase    ,						lowerCAmelCase ) for day in days ):
				raise ValueError('The parameter days should be a list of integers' )

		if len(lowerCAmelCase ) != 3 or not all(isinstance(lowerCAmelCase    ,						lowerCAmelCase ) for cost in costs ):
				raise ValueError('The parameter costs should be a list of three integers' )

		if len(lowerCAmelCase ) == 0:
				return 0

		if min(lowerCAmelCase ) <= 0:
				raise ValueError('All days elements should be greater than 0' )

		if max(lowerCAmelCase ) >= 366:
				raise ValueError('All days elements should be less than 366' )

		SCREAMING_SNAKE_CASE_					      =							set(lowerCAmelCase )

		@functools.cache
		def dynamic_programming(lowerCAmelCase ) -> int:
				if index > 365:
						return 0

				if index not in days_set:
						return dynamic_programming(index + 1 )

				return min(
				    costs[0] + dynamic_programming(index + 1 )    ,						costs[1] + dynamic_programming(index + 7 )    ,						costs[2] + dynamic_programming(index + 30 )    ,						)

		return dynamic_programming(1 )


if __name__ == "__main__":
						import doctest

						doctest.testmod()