#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e2 + 5;
int N, A[NMAX];
int even, odd;
int dp[NMAX][NMAX][NMAX][2];
static inline void Read() {
  ios_base ::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> N;
  int n0 = 0, n1 = 0;
  for (int i = 1; i <= N; ++i) {
    cin >> A[i];
    if (A[i] == 0) continue;
    if (A[i] % 2)
      ++n1;
    else
      ++n0;
  }
  even = (N / 2) - n0;
  odd = ((N + 1) / 2) - n1;
  return;
}
static inline int F(int K, int even, int odd, int Last) {
  if (even < 0 || odd < 0) return 1e9;
  if (K == (N + 1)) return 0;
  if (dp[K][even][odd][Last] != -1) return dp[K][even][odd][Last];
  int ans = 1e9;
  if (A[K] == 0)
    ans = min((F(K + 1, even - 1, odd, 0) + (Last == 1)),
              (F(K + 1, even, odd - 1, 1) + (Last == 0)));
  else
    ans = (F(K + 1, even, odd, (A[K] % 2)) + (Last != (A[K] % 2)));
  return (dp[K][even][odd][Last] = ans);
}
static inline void Solve() {
  memset(dp, -1, sizeof(dp));
  cout << min(F(1, even, odd, 0), F(1, even, odd, 1)) << '\n';
  return;
}
int main() {
  Read();
  Solve();
  return 0;
}
