Java simple code easy understanding
Technique used here taking or not taking the particular string on the basis of some conditions.\n\nclass Solution {\n    int ans = 0;\n    public int maxLength(
Technique used here taking or not taking the particular string on the basis of some conditions.\n```\nclass Solution {\n    int ans = 0;\n    public int maxLength(List<String> arr) {\n        HashSet<Character> hs = new HashSet<>();    // storing unique characters in it\n        helper(arr, 0, 0, hs);\n        return ans;\n    }\n    \n    public int helper(List<String> arr, int idx, int count, HashSet<Character> hs){  // count variable store the length of unique concatenated string\n        if(idx == arr.size()){\n            return count;\n        }\n        for(int i = idx; i < arr.size(); i++){\n            boolean flag = true;\n            HashSet<Character> temp = new HashSet<>();\n            for(int j = 0; j < arr.get(i).length(); j++){\n                if(hs.contains(arr.get(i).charAt(j))){                 // if the ith string has any character which occured before in previous string then made flag false and break the loop\n                    flag = false;\n                    break;\n                }\n                temp.add(arr.get(i).charAt(j));              // here we are adding all characters in different hashset to check that any character in ith string occured 2 or more times or not.\n                \n            }\n            if(flag == true && temp.size() == arr.get(i).length()){   // if ith string does not contains any character which occured before and in ith string also does not have any character which occured 2 or more times.\n                for(int j = 0; j < arr.get(i).length(); j++){\n                    hs.add(arr.get(i).charAt(j));\n                }\n                ans = Math.max(ans, helper(arr, i + 1, count + arr.get(i).length(), hs));  // if ith string  does not contains any same character then add the length of ith string in count and move to the next string \n                for(int j = 0; j < arr.get(i).length(); j++){\n                    hs.remove(arr.get(i).charAt(j));      // in back tracking remove those characters which we have added before\n                }\n            }else{\n                ans = Math.max(ans, helper(arr, i + 1, count, hs));    // if ith string containing any same character then we move on to the next index without including the ith string.\n            }\n            \n        }\n        return ans;   // return maximum concatenated unique character string\n        \n    }\n}\n```
['Backtracking', 'Recursion', 'Java']