input: Write a function that takes in a string and a list of words and returns true if the string contains all the words in the list. If the string is empty or the list of words is empty, return False.
  
  def contains_words(input_string, words):
      if not input_string or not words:
          return False
      for word in words:
          if word.lower() not in input_string.lower():
              return False
      return True
  
  assert contains_words('This is a test', ['test', 'this', 'is']) == True
  assert contains_words('Hello world', ['world', 'hello']) == True
  assert contains_words('Python programming', ['python', 'code']) == False
  assert contains_words('', ['test', 'this', 'is']) == False
  assert contains_words('This is a test', []) == False
output: def contains_words(input_string, words):
      if not input_string or not words:
          return False
      for word in words:
          if word.lower() not in input_string.lower():
              return False
      return True