🐍 Two-Approach || Well-Explained || 97% faster 📌
IDEA:\nSince Constraint is very less we can use O(n^2).\n\n### Using Recurssion :\nIn this we will store each unique lenght substring separetly and will compare
## IDEA:\nSince Constraint is very less we can use O(n^2).\n\n### Using Recurssion :\n*In this we will store each unique lenght substring separetly and will compare with all the possible permutation.*\n\n\'\'\'\n\n\tclass Solution:\n    def maxLength(self,arr):\n        \n        unique = [\'\']\n        res = 0\n        for i in range(len(arr)):\n            for j in range(len(unique)):\n                local = arr[i]+unique[j]\n                if len(local)==len(set(local)):\n                    unique.append(local)\n                    res=max(res,len(local))\n        \n        return res\n        \n\n### Using Backtracking :\n*In this we will join all coming strings with the present one and every time measure the length of formed **unique** substring.*\n\'\'\'\n\n\tclass Solution:\n\t\tres = 0 \n\t\tdef maxLength(self,arr):\n\t\t\tself.backtrack(arr,0,"")\n\t\t\treturn self.res\n\n\t\tdef backtrack(self,arr,ind,local):\n\t\t\tif len(local)!=len(set(local)):\n\t\t\t\treturn\n\t\t\t\t\n\t\t\tself.res = max(self.res,len(local))\n\t\t\tfor i in range(ind,len(arr)):\n\t\t\t\tself.backtrack(arr,i+1,local+arr[i])\n\n#### Thanks and **Upvote** if you got any help or like the solutions !!\uD83E\uDD1E
['Backtracking', 'Recursion', 'Python', 'Python3']