Python Fast Simple Top-Down Dynamic Programming
python\nclass Solution:\n    def findAllConcatenatedWordsInADict(self, words: List[str]) -> List[str]:\n        wordset = set(words)\n        @cache\n        de
```python\nclass Solution:\n    def findAllConcatenatedWordsInADict(self, words: List[str]) -> List[str]:\n        wordset = set(words)\n        @cache\n        def iscat(word):\n            for i in range(1, len(word)):\n                if word[:i] in wordset and (word[i:] in wordset or iscat(word[i:])):\n                    return True\n            return False\n        \n        return [word for word in words if iscat(word)]\n```
['Python']