#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5;
string s[MAXN];
int book[MAXN * 3], vis[MAXN * 3];
stack<char> S;
int main() {
  int n;
  cin >> n;
  int cnt = 0;
  for (int i = 0; i < n; i++) {
    cin >> s[i];
    int l = s[i].size();
    for (int j = 0; j < l; j++) {
      if (s[i][j] == '(') {
        S.push('(');
      } else {
        if (S.empty() == 1) {
          S.push(')');
          continue;
        }
        if (S.top() == '(') {
          S.pop();
        } else {
          S.push(')');
        }
      }
    }
    if (S.empty() == 1) {
      cnt++;
      continue;
    }
    int x = 0, y = 0;
    while (!S.empty()) {
      if (S.top() == ')') {
        x++;
      } else {
        y++;
      }
      S.pop();
    }
    if (x > 0 && y > 0) continue;
    if (x > 0) {
      book[x]++;
    } else {
      vis[y]++;
    }
  }
  int ans = cnt / 2;
  for (int i = 0; i < MAXN * 3; i++) {
    ans += min(book[i], vis[i]);
  }
  cout << ans << endl;
}
