#include "leetcode.h" class Solution { public: int maxLength(vector &arr) { int ans = 0; vector> unique; for (auto s : arr) { bitset<26> b; for (char ch : s) b.set(ch - 'a'); if (b.count() == s.size()) unique.push_back(b); } vector> concat = {bitset<26>()}; for (auto &u : unique) for (int i = concat.size() - 1; i >= 0; i--) if ((concat[i] & u).none()) { concat.push_back(concat[i] | u); ans = max(ans, (concat[i].count() + u.count())); } return ans; } }; int main() { Solution obj; vector arr = {"un", "iq", "ue"}; cout << obj.maxLength(arr); }