#include <bits/stdc++.h>
const int kN = 100 + 5;
int n;
int f[kN][kN][2];
int p[kN];
void update(int &a, int b) {
  if (a > b) a = b;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%d", &p[i]);
  int fill[2] = {n / 2, (n + 1) / 2};
  for (int i = 1; i <= n; ++i)
    if (p[i]) fill[p[i] % 2]--;
  const int INF = 0x3f3f3f3f;
  memset(f, INF, sizeof(f));
  f[0][0][0] = f[0][0][1] = 0;
  int zero = 0;
  for (int i = 1; i <= n; ++i) {
    for (int j = 0; j <= fill[0]; ++j) {
      for (int k = 0; k < 2; ++k)
        if (f[i - 1][j][k] != INF) {
          if (p[i]) {
            update(f[i][j][p[i] % 2], f[i - 1][j][k] + (k != (p[i] % 2)));
          } else {
            for (int r = 0; r < 2; ++r) {
              if (r == 0 && j + 1 > fill[0] || r == 1 && zero - j + 1 > fill[1])
                continue;
              update(f[i][j + (r == 0)][r], f[i - 1][j][k] + (k != r));
            }
          }
        }
    }
    zero += p[i] == 0;
  }
  int result = INF;
  for (int j = 0; j <= fill[0]; ++j)
    for (int k = 0; k < 2; ++k) update(result, f[n][j][k]);
  printf("%d\n", result);
}
