#include <bits/stdc++.h>
using namespace std;
const long long N = 105;
long long n, p[N], memo[2][N][N][N];
long long dp(long long pr, long long po, long long o, long long e) {
  if (memo[pr][po][o][e] != INT_MAX) return memo[pr][po][o][e];
  if (po == n) return 0;
  if (p[po])
    return memo[pr][po][o][e] = (p[po] % 2 != pr) + dp(p[po] % 2, po + 1, o, e);
  long long m = INT_MAX;
  if (o) m = (!pr) + dp(1, po + 1, o - 1, e);
  if (e) m = min(m, pr + dp(0, po + 1, o, e - 1));
  return memo[pr][po][o][e] = m;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  long long odd = (n + 1) / 2, even = n / 2;
  for (long long i = 0; i < n; i++) {
    cin >> p[i];
    if (p[i]) {
      if (p[i] % 2)
        odd--;
      else
        even--;
    }
  }
  for (long long i = 0; i < 2; i++)
    for (long long j = 0; j <= n; j++)
      for (long long k = 0; k <= n; k++)
        fill(memo[i][j][k], memo[i][j][k] + n + 1, INT_MAX);
  cout << min(dp(0, 0, odd, even), dp(1, 0, odd, even)) << '\n';
}
