#include <bits/stdc++.h>
using namespace std;
const int N = 100 + 10;
int n, a[N];
int dp[N][N][N][2], pre[N];
int main() {
  ios::sync_with_stdio(false);
  scanf("%d", &n);
  int odd = 0, even = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%d", a + i);
    if (a[i] > 0) {
      if (a[i] % 2)
        odd++;
      else
        even++;
      pre[i] = pre[i - 1];
    } else
      pre[i] = pre[i - 1] + 1;
  }
  odd = n / 2 - odd;
  even = n / 2 - even;
  if (n % 2) odd++;
  memset(dp, 0x3f, sizeof dp);
  dp[0][0][0][0] = dp[0][0][0][1] = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= even; j++) {
      for (int k = 0; k <= odd; k++) {
        if (a[i] > 0) {
          if (j + k <= pre[i]) {
            if (a[i] % 2 == 0) {
              dp[i][j][k][0] = min(dp[i - 1][j][k][0], dp[i - 1][j][k][1] + 1);
            } else {
              dp[i][j][k][1] = min(dp[i - 1][j][k][0] + 1, dp[i - 1][j][k][1]);
            }
          }
        } else {
          if (j + k <= pre[i]) {
            dp[i][j][k][0] =
                min(dp[i - 1][j - 1][k][0], dp[i - 1][j - 1][k][1] + 1);
            dp[i][j][k][1] =
                min(dp[i - 1][j][k - 1][0] + 1, dp[i - 1][j][k - 1][1]);
          }
        }
      }
    }
  }
  printf("%d\n", min(dp[n][even][odd][0], dp[n][even][odd][1]));
  return 0;
}
