JAVA Clean | Easy To Understand (BackTracking)
\nPlease upvote if you find it helpful\n\n\nclass Solution {\n    int max =0;\n    public int maxLength(List<String> arr) {\n        backTrack(arr,"",0);\n     
```\nPlease upvote if you find it helpful\n```\n```\nclass Solution {\n    int max =0;\n    public int maxLength(List<String> arr) {\n        backTrack(arr,"",0);\n        return max;\n    }\n    \n    private void backTrack(List<String> arr, String current, int start){\n        if(max<current.length())\n            max =current.length();\n        for(int i=start; i<arr.size();i++){\n            if(!isValid(current,arr.get(i))) continue;\n            backTrack(arr,current+arr.get(i),i+1);\n        }\n    }\n    \n    private boolean isValid(String currentString, String newString){\n        int[] array = new int[26];\n        for(int i=0;i<newString.length();i++){\n            if(++array[newString.charAt(i)-\'a\'] == 2) return false;  //to handle if the newString has duplicates then it\'s not valid\n            if(currentString.contains(newString.charAt(i)+"")) // check if the currentString contains each char from newString\n                return false;\n        }\n        return true;\n    }\n}\n```
['Backtracking', 'Java']