def str_replace(s, pair)
cnt = 0
while s.index(pair)
cnt += 1
s = s.sub(pair, '')
end
[s, cnt]
end
def calc_count(s)
ret = 0
[['()', 0], ['((', 1], ['))', 1], [')(', 2]].map do |e|
pair, mul = e
s, cnt = str_replace s, pair
ret += cnt * mul
end
s != '' ? -1 : ret
end
s = [')',
'())())',
')()()(',
')))(((',
'(())())((())(()(',
'())((())()))()(((()))()((((((((()()(()))']
puts s.map { |e| [e, ' ---> ', calc_count(e)].join }
ZGVmIHN0cl9yZXBsYWNlKHMsIHBhaXIpCiAgY250ID0gMAogIHdoaWxlIHMuaW5kZXgocGFpcikKICAgIGNudCArPSAxCiAgICBzID0gcy5zdWIocGFpciwgJycpCiAgZW5kCiAgW3MsIGNudF0KZW5kCgpkZWYgY2FsY19jb3VudChzKQogIHJldCA9IDAKICBbWycoKScsIDBdLCBbJygoJywgMV0sIFsnKSknLCAxXSwgWycpKCcsIDJdXS5tYXAgZG8gfGV8CiAgICBwYWlyLCBtdWwgPSBlCiAgICBzLCBjbnQgPSBzdHJfcmVwbGFjZSBzLCBwYWlyCiAgICByZXQgKz0gY250ICogbXVsCiAgZW5kCiAgcyAhPSAnJyA/IC0xIDogcmV0CmVuZAoKcyA9IFsnKScsCiAgICAgJygpKSgpKScsCiAgICAgJykoKSgpKCcsCiAgICAgJykpKSgoKCcsCiAgICAgJygoKSkoKSkoKCgpKSgoKSgnLAogICAgICcoKSkoKCgpKSgpKSkoKSgoKCgpKSkoKSgoKCgoKCgoKCkoKSgoKSkpJ10KCnB1dHMgcy5tYXAgeyB8ZXwgW2UsICcgLS0tPiAnLCBjYWxjX2NvdW50KGUpXS5qb2luIH0K