human
PYTHON3 solution for "A bracket sequence is a string containing only characters "(" and ")". A regular bracket sequence (or, shortly, an RBS) is a bracket sequence that can be transformed into a correct arithmetic expression by inserting characters "1" and "+" between the original characters of the sequence. For example:

  * bracket sequences "()()" and "(())" are regular (the resulting expressions are: "(1)+(1)" and "((1+1)+1)").

  * bracket sequences ")(", "(" and ")" are not. 


Let's denote the concatenation of two strings x and y as x+y. For example, "()()" + ")(" = "()())(".

You are given n bracket sequences s_1, s_2, ..., s_n. You can rearrange them in any order (you can rearrange only the strings themselves, but not the characters in them).

Your task is to rearrange the strings in such a way that the string s_1 + s_2 + ... + s_n has as many non-empty prefixes that are RBS as possible.

Input

The first line contains a single integer n (1 ≤ n ≤ 20).

Then n lines follow, the i-th of them contains s_i — a bracket sequence (a string consisting of characters "(" and/or ")". All sequences s_i are non-empty, their total length does not exceed 4 ⋅ 10^5.

Output

Print one integer — the maximum number of non-empty prefixes that are RBS for the string s_1 + s_2 + ... + s_n, if the strings s_1, s_2, ..., s_n can be rearranged arbitrarily.

Examples

Input

2
(
)

Output

1

Input

4
()()())
(
(
)

Output

4

Input

1
(())

Output

1

Input

1
)(()

Output

0

Note

In the first example, you can concatenate the strings as follows: "(" + ")" = "()", the resulting string will have one prefix, that is an RBS: "()".

In the second example, you can concatenate the strings as follows: "(" + ")" + "()()())" + "(" = "()()()())(", the resulting string will have four prefixes that are RBS: "()", "()()", "()()()", "()()()()".

The third and the fourth examples contain only one string each, so the order is fixed.":
assistant
#Here is Python program to print one integer — the maximum number of non-empty prefixes that are RBS for the string s_1 + s_2 + .
 def solve():
    n = int(input());a = [[0] for i in range(n)];mb = [0] * (1 << n)
    for i in range(n):
        s = input().strip();m = 0;b = 0
        for c in s:
            if c == '(':b += 1
            else:
                b -= 1
                if b <= 0:
                    if m > b:m = b;a[i].append(1)
                    elif m == b:a[i][-1] += 1
        mb[1 << i] = b
    dp = [-1000000000] * (1 << n);dp[0] = 0;ans = 0
    for i in range(1, 1 << n):
        j = i & (i - 1)
        if j:mb[i] = mb[i-j] + mb[j]
        nd = -1000000000
        for j in range(n):
            if (i >> j) & 1:
                d = dp[i - (1 << j)]
                if d >= 0:
                    bb = mb[i - (1 << j)];m = len(a[j]) - 1
                    if bb - m < 0:ans = max(ans, a[j][bb] + d)
                    else:nd = max(nd, (a[j][-1] if bb - m == 0 else 0) + d)
        ans = max(ans, nd);dp[i] = nd
    print(ans)
solve()