#ifndef INCLUDED_MAIN #define INCLUDED_MAIN #include __FILE__ int main() { int n; cin>>n; string s; cin>>s; string s2=s+s; vector cum2(2*n+1,0); rep(i,2*n) { cum2[i+1]=cum2[i]+(s2[i]=='(' ? 1 : -1); } int min_cost=iinf; rep(k,n) { int ch=0; int balance=0; int min_bal=0; srep(i,k,k+n-1) { balance+=(s2[i]=='(' ? 1 : -1); min_bal=min(min_bal,balance); } int final=cum2[k+n]-cum2[k]; if (final%2!=0) continue; if (min_bal<0) ch+=(-min_bal+1)/2; if (final>0) ch+=final/2; else ch+=(-final)/2; chmin(min_cost,ch); } cout< using namespace std; #define rep(i,n) for(ll i=0;i=l;i--) #define srep(i,l,r) for(ll i=l;i<=r;i++) using ll = long long; using ld = long double; const ll mod=998244353; #define vout(v) for(auto i :v) cout< #define vc vector int calc_min(string &s) { stack st; for(char c:s) { if(c=='(') { st.push(0); } else { int cur=st.top(); st.pop(); int score=(cur==0 ? 2 : cur+1); if(st.empty()) { st.push(score); } else { int prev=st.top(); st.pop(); st.push(prev+score); } } } return st.empty() ? 0:st.top(); } template bool chmin(T& a, T b){if(a > b){a = b; return true;} return false;} template bool chmax(T& a, T b){if(a < b){a = b; return true;} return false;} void no() { cout<<"No"<& a) { ll ans=0; for(auto i:a) ans+=i; return ans; } ll modpow(ll fl, ll po, ll mode) { // mode: 0=modなし, 1=modあり ll ret=1; if (mode) { while (po>0) { if (po&1) ret=(ret*fl)%mod; fl=(fl*fl)%mod; po>>=1; } } else { while (po>0) { if(po&1) ret*=fl; fl*=fl; po>>=1; } } return ret; } #endif