1class Solution:2def maxUniqueSplit(self, s: str) -> int:3ans, n = 0, len(s)45def dfs(i, cnt, visited):6nonlocal ans, n7if i == n:8ans = max(ans, cnt)9return # stop condition10for j in range(i + 1, n + 1):11if s[i:j] in visited:12continue # avoid re-visit/duplicates13visited.add(s[i:j]) # update visited set14dfs(j, cnt + 1, visited) # backtracking15visited.remove(s[i:j]) # recover visited set for next possibility1617dfs(0, 0, set()) # function call18return ans