input: from typing import List
  
  
  def generate_random_password(length: int) -> str:
      """Generate a random password with the given length, containing at least one of each character type: lowercase, uppercase, digit, and special character.
      >>> generate_random_password(8)
      'A1b!2Cd3'
      >>> generate_random_password(12)
      'Q2w#E3r$T4y%'
      """
      import string
      import random
  
      special_characters = "!#$%&'()*+,-./:;<=>?@[\]^_`{|}~"
  
      password = random.choice(string.ascii_lowercase)
      password += random.choice(string.ascii_uppercase)
      password += random.choice(string.digits)
      password += random.choice(special_characters)
  
      all_characters = string.ascii_lowercase + string.ascii_uppercase + string.digits + special_characters
  
      for i in range(length - 4):
          password += random.choice(all_characters)
  
      return ''.join(random.sample(password, len(password)))
output:     import string
      import random
  
      special_characters = "!#$%&'()*+,-./:;<=>?@[\]^_`{|}~"
  
      password = random.choice(string.ascii_lowercase)
      password += random.choice(string.ascii_uppercase)
      password += random.choice(string.digits)
      password += random.choice(special_characters)
  
      all_characters = string.ascii_lowercase + string.ascii_uppercase + string.digits + special_characters
  
      for i in range(length - 4):
          password += random.choice(all_characters)
  
      return ''.join(random.sample(password, len(password)))