class Solution:
def makeGood(self, s: str) -> str:
"""
main idea: stack, keep tracking current char and stack top if they are lower and upper case
tc O(N) sc O(N)
"""
st = []
n = len(s)
for i in range(n):
if st and abs(ord(s[i])-ord(st[-1])) == 32:
st.pop()
continue
st.append(s[i])
return ''.join(st)