Java simple DFS
\nclass Solution {\n    int res = 0;\n    public int maxLength(List<String> arr) {\n        dfs(arr, 0, "");\n        return res;\n    }\n    \n    private void
```\nclass Solution {\n    int res = 0;\n    public int maxLength(List<String> arr) {\n        dfs(arr, 0, "");\n        return res;\n    }\n    \n    private void dfs(List<String> l, int idx, String s) {\n        if (unique(s)) res = Math.max(res, s.length());\n        else return;\n        for (int i = idx; i < l.size(); i++) {  // start with idx;\n            if (unique(l.get(i))) dfs(l, i + 1, s + l.get(i));\n        }\n    }\n    \n    private boolean unique(String s) {\n        int[] cnt = new int[26];\n        for (char c : s.toCharArray()) {\n            if (++cnt[c - \'a\'] > 1) return false;\n        }\n        return true;\n    }\n}\n```\nref: https://leetcode.com/problems/maximum-length-of-a-concatenated-string-with-unique-characters/discuss/414180/Clean-JavaJavaScript-DFS-solution
[]