input: Write a function to query Twitter and retrieve the most recent tweets from a specified user. The function should use Tweepy to authenticate and fetch tweets. If authentication fails, the function should return an error message. If the user does not exist, the function should return an appropriate message. If the query is successful, the function should return a list of the most recent tweets (up to 20) from the user, each represented as a string.
  assert get_recent_tweets("@elonmusk")==["Tweet 1", "Tweet 2", "Tweet 3", ..., "Tweet 20"]
  assert get_recent_tweets("@nonexistentuser")=="User not found"
  assert get_recent_tweets("@")[0]=="Authentication error"
  assert get_recent_tweets("-")=="Invalid username"
output: def get_recent_tweets(username):
      if not username.startswith("@"):
          return "Invalid username"
      
      try:
          auth = tweepy.OAuthHandler("API_KEY", "API_SECRET")
          auth.set_access_token("ACCESS_TOKEN", "ACCESS_SECRET")
          api = tweepy.API(auth)
      except:
          return ["Authentication error"]
      
      try:
          tweets = api.user_timeline(screen_name=username[1:], count=20, tweet_mode="extended")
          return [tweet.full_text for tweet in tweets]
      except tweepy.TweepError as e:
          if "User not found" in str(e):
              return "User not found"
          else:
              return ["Authentication error"]