class Solution:
def maxActiveSectionsAfterTrade(self, s: str) -> int:
groups = [(1,0)]
left = 0
nOnes = 0
while left < len(s):
right = left
while right < len(s) and s[left] == s[right]:
right += 1
groups.append((int(s[left]), right - left))
nOnes += groups[-1][0] * groups[-1][1]
left = right
groups.append((1, 0))
resp = nOnes
for idx in range(1, len(groups) - 1):
if groups[idx - 1][0] == 0 and groups[idx][0] == 1 and groups[idx + 1][0] == 0:
resp = max(resp, nOnes + groups[idx - 1][1] + groups[idx + 1][1])
return(resp)