贪玩的二小姐(续)
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

芙兰朵露拿到了一个只含有 '(' 和 ')' 这两种字符的字符串。芙兰想玩一玩这个字符串。

现在将字符串括号匹配定义如下:

  1. 空字符串: "" 是匹配的。
  2. 若字符串是匹配的,那么 "(s)" 是匹配的。
  3. 若字符串都是匹配的,字符串 "st" 是匹配的。

例如,"(()())" 是匹配的 , "())(()"则不是匹配的。
芙兰朵露每一次操作可以将括号翻转,即把左括号变成右括号,或者把右括号变成左括号。
她想知道将给定的字符串变成匹配的,需要最少的操作次数是多少?

输入描述:

第一行一个正整数,代表给定字符串的长度。
第二行是一个长度为的、仅含有 '( '和 ')' 这两种字符的字符串。

输出描述:

如果能在有限次操作将字符串变成匹配的,请输出最少的操作次数。
否则输出-1
示例1

输入

复制
4
()))

输出

复制
1

说明

将第三个括号翻转,字符串变成 "()()" ,为匹配的。
示例2

输入

复制
1
(

输出

复制
-1

说明

翻转后字符串变成")",显然不可能匹配。