


from __future__ import annotations

_snake_case             =     8.988E9  # units = N * m^s * C^-2






def 		lowercase_(  SCREAMING_SNAKE_CASE_      ,						SCREAMING_SNAKE_CASE_      ,						SCREAMING_SNAKE_CASE_      ,						SCREAMING_SNAKE_CASE_	):


  '''simple docstring'''

  lowerCamelCase :					Union[str, Any]    =				abs(chargea * chargea	)

  if (force, chargea, chargea, distance).count(0	) != 1:
    raise ValueError("One and only one argument must be 0"	)
  if distance < 0:
    raise ValueError("Distance cannot be negative"	)
  if force == 0:
    lowerCamelCase :					Dict    =				COULOMBS_CONSTANT * charge_product / (distance**2)
    return {"force": force}
  elif chargea == 0:
    lowerCamelCase :					List[Any]    =				abs(lowerCAmelCase_	) * (distance**2) / (COULOMBS_CONSTANT * chargea)
    return {"charge1": chargea}
  elif chargea == 0:
    lowerCamelCase :					Optional[int]    =				abs(lowerCAmelCase_	) * (distance**2) / (COULOMBS_CONSTANT * chargea)
    return {"charge2": chargea}
  elif distance == 0:
    lowerCamelCase :					List[str]    =				(COULOMBS_CONSTANT * charge_product / abs(lowerCAmelCase_	)) ** 0.5
    return {"distance": distance}
  raise ValueError("Exactly one argument must be 0"	)


if __name__ == "__main__":
   import doctest

   doctest.testmod()







"""simple docstring"""







from abc import ABC, abstractmethod
from argparse import ArgumentParser




class  UpperCamelCase_	( UpperCamelCase):

	"""simple docstring"""





	@staticmethod
	@abstractmethod
	def   UpperCAmelCase_      ( UpperCAmelCase__			:				ArgumentParser   )       ->	int:
						raise NotImplementedError()




	@abstractmethod
	def   UpperCAmelCase_      ( self			:				int   )       ->	Optional[int]:
						raise NotImplementedError()
