#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  scanf("%d", &n);
  int last = -1, zeros = 0, odd = n / 2 + n % 2, even = n / 2;
  int dp[111][111][2] = {0};
  memset(dp, 0x3f, sizeof(dp));
  int num[111] = {0};
  int space[111] = {0};
  for (int i = 0; i < n; i++) {
    scanf("%d", &num[i]);
    if (num[i] == 0)
      zeros += 1, space[i] = 1;
    else if (num[i] % 2 == 0)
      even -= 1;
    else
      odd -= 1;
  }
  for (int i = 1; i < n; i++) space[i] += space[i - 1];
  if (num[0] == 0) {
    if (even) dp[0][1][0] = 0;
    if (odd) dp[0][0][1] = 0;
  } else if (num[0] % 2 == 0)
    dp[0][0][0] = 0;
  else
    dp[0][0][1] = 0;
  for (int i = 0; i < n - 1; i++)
    for (int j = 0; j <= even; j++)
      if (dp[i][j][0] < 10000 || dp[i][j][1] < 10000) {
        int j2 = space[i] - j;
        if (num[i + 1] != 0) {
          if (num[i + 1] % 2 == 0) {
            dp[i + 1][j][0] = min(dp[i + 1][j][0], dp[i][j][0]);
            dp[i + 1][j][0] = min(dp[i + 1][j][0], dp[i][j][1] + 1);
          } else {
            dp[i + 1][j][1] = min(dp[i + 1][j][1], dp[i][j][1]);
            dp[i + 1][j][1] = min(dp[i + 1][j][1], dp[i][j][0] + 1);
          }
        } else {
          if (j < even) {
            dp[i + 1][j + 1][0] = min(dp[i + 1][j + 1][0], dp[i][j][0]);
            dp[i + 1][j + 1][0] = min(dp[i + 1][j + 1][0], dp[i][j][1] + 1);
          }
          if (j2 < odd) {
            dp[i + 1][j][1] = min(dp[i + 1][j][1], dp[i][j][0] + 1);
            dp[i + 1][j][1] = min(dp[i + 1][j][1], dp[i][j][1]);
          }
        }
      }
  printf("%d\n", min(dp[n - 1][even][0], dp[n - 1][even][1]));
}
