Java Nice & Small, whats the TimeComplexity?
\nclass Solution {\n    public List<String> findAllConcatenatedWordsInADict(String[] words) {\n        List<String> aList = new ArrayList<>();\n        if(words
```\nclass Solution {\n    public List<String> findAllConcatenatedWordsInADict(String[] words) {\n        List<String> aList = new ArrayList<>();\n        if(words.length == 0) return aList;\n        Set<String> wordSet = new HashSet<>();\n        for (String string : words) {\n            wordSet.add(string);\n        }\n        for (String word : words) {\n            if(canConcatinate(word, wordSet)) {\n                aList.add(word);\n            }\n        }\n        return aList;\n    }\n\n    private boolean canConcatinate(String word, Set<String> wSet) {\n        for (int i = 1 ; i < word.length(); i++) {\n            String prefix = word.substring(0 , i);\n            String suffix = word.substring(i , word.length());\n            if(wSet.contains(prefix) && (wSet.contains(suffix) || canConcatinate(suffix, wSet))) {\n                return true;\n            }\n        }\n        return false;\n    }\n}\n```
['Java']