explained my c++ solution using backtracking.
\nclass Solution {\n    int len{0};\npublic:\n    int maxLength(vector<string>& arr) {\n        checkLen("", arr, 0);\n        return len;\n    }\n    \n    voi
```\nclass Solution {\n    int len{0};\npublic:\n    int maxLength(vector<string>& arr) {\n        checkLen("", arr, 0);\n        return len;\n    }\n    \n    void checkLen(string str, vector<string> &arr, int itr) {\n        if (!isUnique(str)) return;\n        if (str.size() > len) len = str.size();\n        for (int i = itr; i < arr.size(); i++)\n            checkLen(str+arr[i], arr, i+1);\n    }\n    \n    bool isUnique(string word) {\n        set<char> st;\n        for (auto ele : word) {\n            if (st.find(ele) != st.end()) return false;\n            st.insert(ele);\n        }\n        return true;\n    }\n};\n```\n\nthe logic behind solution is straight-forward, for each possible combination of two or more (given) array elements check if \n\t1. all the elements are unique.\n\t2. the length is longest
['Backtracking', 'C']