

from math import factorial

def 							__SCREAMING_SNAKE_CASE							(				lowerCAmelCase:  int  ,      lowerCAmelCase:  int  ,      lowerCAmelCase:  float )   ->       float:
				if successes > trials:
								raise ValueError("successes must be lower or equal to trials" )
				if trials < 0 or successes < 0:
								raise ValueError("the function is defined for non-negative integers" )
				if not isinstance(lowerCAmelCase  ,      lowerCAmelCase ) or not isinstance(lowerCAmelCase  ,      lowerCAmelCase ):
								raise ValueError("the function is defined for non-negative integers" )
				if not 0 < prob < 1:
								raise ValueError("prob has to be in range of 1 - 0" )
				_UpperCAmelCase       :		Dict 		=    (prob**successes) * ((1 - prob) ** (trials - successes))
				# Calculate the binomial coefficient: n! / k!(n-k)!
				_UpperCAmelCase       :		int 		=    float(factorial(lowerCAmelCase ) )
				coefficient /= factorial(lowerCAmelCase ) * factorial(trials - successes )
				return probability * coefficient


if __name__ == "__main__":
					from doctest import testmod

					testmod()
					print('Probability of 2 successes out of 4 trails')
					print('with probability of 0.75 is:', end=' ')
					print(binomial_distribution(2, 4, 0.75))





def 							__SCREAMING_SNAKE_CASE							(				lowerCAmelCase:  str  ,      lowerCAmelCase:  str )   ->       int:
				if len(lowerCAmelCase ) != len(lowerCAmelCase ):
								raise ValueError("String lengths must match!" )

				_UpperCAmelCase       :		List[Any] 		=    0

				for chara, chara in zip(lowerCAmelCase  ,      lowerCAmelCase ):
								if chara != chara:
												count += 1

				return count


if __name__ == "__main__":
					import doctest

					doctest.testmod()


