Python DFS readable solution
\nclass Solution(object):\n    def findAllConcatenatedWordsInADict(self, words):\n        """\n        :type words: List[str]\n        :rtype: List[str]\n      
```\nclass Solution(object):\n    def findAllConcatenatedWordsInADict(self, words):\n        """\n        :type words: List[str]\n        :rtype: List[str]\n        """\n        d = set(words)\n        \n        def dfs(word):\n            for i in range(1, len(word)):\n                prefix = word[:i]\n                suffix = word[i:]\n                \n                if prefix in d and suffix in d:\n                    return True\n                if prefix in d and dfs(suffix):\n                    return True\n                if suffix in d and dfs(prefix):\n                    return True\n            \n            return False\n        \n        res = []\n        for word in words:\n            if dfs(word):\n                res.append(word)\n        \n        return res\n```
[]