input: 
  def generate_random_password() -> str:
      """Generate a random password of length 8 characters, including at least one
      lowercase letter, one uppercase letter, one digit, and one special character.
      >>> password = generate_random_password()
      >>> print(password)
      'aB1!5*cQ'
      """
      import string
      import random
  
      length = 8
      special_characters = "!#$%&'()*+,-./:;<=>?@[\]^_`{|}~"
  
      password = random.choice(string.ascii_lowercase)
      password += random.choice(string.ascii_uppercase)
      password += random.choice(string.digits)
      password += random.choice(special_characters)
  
      for i in range(length - 4):
          password += random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits + special_characters)
  
      return ''.join(random.sample(password, len(password)))
  
  password = generate_random_password()
  print("Password is: ", password)
  
output:     while True:
          if (any(c.islower() for c in password) and
              any(c.isupper() for c in password) and
              any(c.isdigit() for c in password) and
              any(c in special_characters for c in password)):
              break
          password = generate_random_password()
      return password