#include <bits/stdc++.h>
using namespace std;
const double pi =
    3.14159265358979323846264338327950288419716939937510582097494459230;
long long powm(long long a, long long b, long long m) {
  long long res = 1;
  while (b) {
    if (b & 1) res = (res * a) % m;
    a = (a * a) % m;
    b >>= 1;
  }
  return res;
}
long long ceil(const long long &a, const long long &b) {
  if (a % b == 0) return a / b;
  return a / b + 1;
}
const int N = 105;
int a[N];
int dp[N][N][N][2];
int n, e = 0, o = 0, first;
int solve(int id, int o, int e, int first) {
  if (id >= n) return 0;
  if (dp[id][o][e][first] != -1) return dp[id][o][e][first];
  int ans = INT_MAX;
  if (a[id] != 0) {
    int k = a[id] % 2;
    ans = solve(id + 1, o, e, a[id] % 2) + (k != first);
  } else {
    if (o > 0) ans = min(ans, solve(id + 1, o - 1, e, 1) + (first != 1));
    if (e > 0) ans = min(ans, solve(id + 1, o, e - 1, 0) + (first != 0));
  }
  return dp[id][o][e][first] = ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int i;
  cin >> n;
  set<int> st;
  memset(dp, -1, sizeof(dp));
  for (i = 0; i < n; i++) {
    cin >> a[i];
    st.insert(a[i]);
  }
  for (i = 1; i < n + 1; i++) {
    if (st.find(i) == st.end()) {
      if (i % 2)
        o++;
      else
        e++;
    }
  }
  int ans = INT_MAX;
  if (a[0] == 0) {
    if (o > 0) {
      ans = min(ans, solve(1, o - 1, e, 1));
    }
    if (e > 0) {
      ans = min(ans, solve(1, o, e - 1, 0));
    }
  } else {
    ans = solve(0, o, e, a[0] % 2);
  }
  cout << ans << "\n";
  return 0;
}
