#include <bits/stdc++.h>
using namespace std;
int ara[105];
int dp[105][105][105][2];
int n;
int f(int i, int jor, int bijor, int last) {
  if (jor < 0 || bijor < 0) return 1e9;
  if (i > n) return 0;
  int &ans = dp[i][jor][bijor][last];
  if (ans != -1) return ans;
  if (ara[i] == 0) {
    if (last) {
      int x = 1 + f(i + 1, jor - 1, bijor, 0);
      int y = f(i + 1, jor, bijor - 1, 1);
      return ans = min(x, y);
    } else {
      int x = f(i + 1, jor - 1, bijor, 0);
      int y = 1 + f(i + 1, jor, bijor - 1, 1);
      return ans = min(x, y);
    }
  } else {
    if (ara[i] % 2 == last) {
      return ans = f(i + 1, jor, bijor, ara[i] % 2);
    } else
      return ans = 1 + f(i + 1, jor, bijor, ara[i] % 2);
  }
}
void solve() {
  cin >> n;
  set<int> even, odd;
  for (int i = 1; i <= n; i++) {
    if (i % 2)
      odd.insert(i);
    else
      even.insert(i);
  }
  for (int i = 1; i <= n; i++) {
    cin >> ara[i];
    if (odd.find(ara[i]) != odd.end()) odd.erase(ara[i]);
    if (even.find(ara[i]) != even.end()) even.erase(ara[i]);
  }
  int jor = even.size();
  int bijor = odd.size();
  memset(dp, -1, sizeof dp);
  if (ara[1] == 0) {
    int ans = min(f(2, jor - 1, bijor, 0), f(2, jor, bijor - 1, 1));
    cout << ans;
  } else
    cout << f(1, jor, bijor, ara[1] % 2);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  solve();
  cerr << "\nTime elapsed: " << 1000.0 * clock() / CLOCKS_PER_SEC << " ms\n";
  return 0;
}
