#include using namespace std; typedef long long LL; int main() { #ifndef ONLINE_JUDGE freopen("data/data1.in", "r", stdin); // freopen("data/data1.out", "w", stdout); #endif int n; string s; cin >> n >> s; LL l = 0; LL r = 0; vector> lr; LL ans = 0; LL C = 0; for (int i = 0; i < n; i++) { if (s[i] == '(') { r++; } else { if (r > 0) { r--; C++; } else { l++; } } lr.emplace_back(l, r); ans += C * 2; } sort(lr.begin(), lr.end(), [](auto a, auto b) { return minmax(-a.first, -a.first + a.second - b.first) > minmax(-b.first, -b.first + b.second - a.first); }); r = 0; for (auto p : lr) { LL take = min(r, p.first); r -= take; ans += take * 2; r += p.second; } cout << ans << endl; }