#include <bits/stdc++.h>
using namespace std;
const long long pp = 1e9 + 7;
const long double eps = 1e-8;
inline long long ksm(long long x, long long y = pp - 2) {
  x = (x % pp + pp) % pp;
  long long ans = 1;
  while (y) {
    if (y & 1) ans = ans * x % pp;
    x = x * x % pp;
    y >>= 1;
  }
  return ans;
}
inline long long gcd(long long x, long long y) { return y ? gcd(y, x % y) : x; }
inline void reads(char s[], int &n) {
  n = 0;
  char ch = getchar();
  while (ch == ' ' || ch == '\n' || ch == '\r') ch = getchar();
  while (ch != ' ' && ch != '\n' && ch != '\r' && ch != EOF)
    s[++n] = ch, ch = getchar();
}
int n, ans = 1e9;
int p[109], f[109][109][2], totcnt[2], spa[109];
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    totcnt[i & 1]++;
    scanf("%d", &p[i]);
    spa[i] = spa[i - 1];
    if (!p[i]) {
      p[i] = -1;
      spa[i]++;
      continue;
    }
    p[i] &= 1;
  }
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= n; j++)
      for (int k = 0; k <= 1; k++) f[i][j][k] = 1e9;
  f[0][0][0] = 0;
  f[0][0][1] = 0;
  for (int i = 1; i <= n; i++)
    for (int j = totcnt[0]; j >= 0; j--) {
      if ((p[i] == -1 || p[i] == 0) && j >= 1)
        f[i][j][0] = min(f[i - 1][j - 1][0], f[i - 1][j - 1][1] + 1);
      if (p[i] == -1 || p[i] == 1)
        f[i][j][1] = min(f[i - 1][j][0] + 1, f[i - 1][j][1]);
    }
  printf("%d\n", min(f[n][totcnt[0]][0], f[n][totcnt[0]][1]));
  return 0;
}
