input: Write a python function to generate all possible strings of length 3 using a given alphabet.
  assert generate_strings(['a', 'b', 'c'], 3) == ['aaa', 'aab', 'aac', 'aba', 'abb', 'abc', 'aca', 'acb', 'acc', 'baa', 'bab', 'bac', 'bba', 'bbb', 'bbc', 'bca', 'bcb', 'bcc', 'caa', 'cab', 'cac', 'cba', 'cbb', 'cbc', 'cca', 'ccb', 'ccc']
  assert generate_strings(['x', 'y'], 3) == ['xxx', 'xxy', 'xyx', 'xyy', 'yxx', 'yxy', 'yyx', 'yyy']
  assert generate_strings(['m', 'n'], 3) == ['mmm', 'mmn', 'mnm', 'mnn', 'nmm', 'nmn', 'nnm', 'nnn']
output: def generate_strings(alphabet, length):
      if length == 0:
          return ['']
      
      smaller_strings = generate_strings(alphabet, length - 1)
      result = []
      
      for char in alphabet:
          for string in smaller_strings:
              result.append(char + string)
      
      return result