#include <bits/stdc++.h>
using namespace std;
const int MAX = 500009;
int n;
int main() {
  vector<string> s;
  string tmp;
  int l[MAX], r[MAX], z = 0;
  memset(l, 0, sizeof(l));
  memset(r, 0, sizeof(r));
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> tmp;
    s.push_back(tmp);
  }
  for (int i = 0; i < n; i++) {
    string st;
    for (int j = 0; j < s[i].size(); j++) {
      if (st.size() > 0 && st.back() == '(' && s[i][j] == ')') {
        st.pop_back();
      } else {
        st.push_back(s[i][j]);
      }
    }
    if (st.size() > 0 && st.front() != st.back()) {
      continue;
    }
    if (st.size() == 0) {
      z++;
    } else if (st[0] == '(') {
      l[st.size()]++;
    } else {
      r[st.size()]++;
    }
  }
  int res = z / 2;
  for (int i = 1; i < MAX; i++) {
    res += min(l[i], r[i]);
  }
  cout << res << endl;
  return 0;
}
