Python: [Intuitive Solution] Simulate rounds using DFS + string map
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution:\n    def earliestAndLatest(self, n: int, firstPlayer: int, secondPlayer: int) -> List[int]:\n        minR,maxR=999999,-122\n        players=\'\'\n        for i in range(1,n+1):\n            players+=chr(i+65)\n        fp=chr(firstPlayer+65)\n        sp=chr(secondPlayer+65)\n\n        @cache\n        def dfs(s,num_round,winners):\n            nonlocal maxR, minR\n            if len(s)==0:\n                dfs("".join(sorted(winners)),num_round+1,\'\')\n                return\n            if len(s)==1:\n                winners+=s[0]\n                dfs("".join(sorted(winners)),num_round+1,\'\')\n                return\n            if s[0]==fp and s[-1]==sp:\n                \n                maxR=max(maxR,num_round)\n                minR=min(minR,num_round)\n                return\n            elif s[0]==fp or s[0]==sp:\n                winners+=s[0]\n                s=s[1:-1]\n                dfs(s,num_round,winners)\n            elif s[-1]==fp or s[-1]==sp:\n                winners+=s[-1]\n                s=s[1:-1]\n                dfs(s,num_round,winners)\n            else:\n                l,r=s[0],s[-1]\n                dfs(s[1:-1],num_round,winners+l)\n                dfs(s[1:-1],num_round,winners+r)\n            return\n        \n        dfs(players, 1, \'\')\n        return [minR,maxR]\n\n\n            \n```
['Python3']