Simple Backtracking solution
\nclass Solution {\n    int max = 0;\n    public int maxLength(List<String> arr) {\n        dfs(0, arr, "");\n        return max;\n    }\n    \n    public void 
```\nclass Solution {\n    int max = 0;\n    public int maxLength(List<String> arr) {\n        dfs(0, arr, "");\n        return max;\n    }\n    \n    public void dfs(int start, List<String> arr, String str){\n        if(!isUnique(str)){\n            return;\n        }\n        max = Math.max(max, str.length());\n        \n        for(int i=start; i<arr.size();i++){\n            String s = arr.get(i);\n            dfs(i+1, arr, str + s);\n        }\n    }\n    \n    public static boolean isUnique(String s){\n        Set<Character> set = new HashSet<Character>();\n        \n        for(char ch: s.toCharArray()){\n            if(set.contains(ch)){\n                return false;\n            }\n            set.add(ch);\n        }\n        return true;\n    }\n}\n```
[]