#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7, inv2 = (MOD + 1) / 2;
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
int dp[110][110][110][2], a[1000000 + 10];
int read() {
  int v = 0, f = 1;
  char c = getchar();
  while (c < 48 || 57 < c) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (48 <= c && c <= 57) v = (v << 3) + v + v + c - 48, c = getchar();
  return v * f;
}
long long readll() {
  long long v = 0, f = 1;
  char c = getchar();
  while (c < 48 || 57 < c) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (48 <= c && c <= 57) v = (v << 3) + v + v + c - 48, c = getchar();
  return v * f;
}
int main() {
  int n = read();
  int s0 = 0, s1 = 0;
  for (int i = (int)1; i <= (int)n; i++)
    if (i % 2 == 1)
      s1++;
    else
      s0++;
  for (int i = (int)1; i <= (int)n; i++) {
    a[i] = read();
    if (a[i] == 0)
      a[i] = -1;
    else {
      a[i] = a[i] % 2;
      if (a[i] == 0)
        s0--;
      else
        s1--;
    }
  }
  for (int i = (int)0; i <= (int)n; i++)
    for (int j = (int)0; j <= (int)s0; j++)
      for (int k = (int)0; k <= (int)s1; k++)
        for (int op = (int)0; op <= (int)1; op++) dp[i][j][k][op] = 2e9;
  dp[0][s0][s1][0] = dp[0][s0][s1][1] = 0;
  a[0] = -1;
  for (int i = (int)1; i <= (int)n; i++) {
    if (a[i] != -1) {
      for (int j = (int)0; j <= (int)s0; j++)
        for (int k = (int)0; k <= (int)s1; k++)
          for (int op = (int)0; op <= (int)1; op++) {
            int t = 0;
            if (op != a[i]) t = 1;
            if (dp[i - 1][j][k][op] < 2e9)
              dp[i][j][k][a[i]] =
                  min(dp[i][j][k][a[i]], dp[i - 1][j][k][op] + t);
          }
      continue;
    }
    for (int j = (int)0; j <= (int)s0; j++)
      for (int k = (int)0; k <= (int)s1; k++)
        for (int x = (int)0; x <= (int)1; x++)
          for (int y = (int)0; y <= (int)1; y++) {
            int t = 0;
            if (x != y) t = 1;
            if (x == 0 && (a[i - 1] == -1 || a[i - 1] == y) && j + 1 <= s0 &&
                dp[i - 1][j + 1][k][y] < 2e9)
              dp[i][j][k][x] = min(dp[i][j][k][x], dp[i - 1][j + 1][k][y] + t);
            if (x == 1 && (a[i - 1] == -1 || a[i - 1] == y) && k + 1 <= s1 &&
                dp[i - 1][j][k + 1][y] < 2e9)
              dp[i][j][k][x] = min(dp[i][j][k][x], dp[i - 1][j][k + 1][y] + t);
          }
  }
  int ans = min(dp[n][0][0][0], dp[n][0][0][1]);
  printf("%d\n", ans);
  return 0;
}
