#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9 + 7;
const int maxN = 105;
int n, arr[maxN];
int dp[maxN][maxN][maxN][2];
int solve(int pos, int evens, int odds, bool prevOdd) {
  if (pos > n) return 0;
  if (dp[pos][evens][odds][prevOdd] != -1) return dp[pos][evens][odds][prevOdd];
  int ans = maxN;
  if (arr[pos] != 0) {
    int x = (arr[pos] % 2) != prevOdd;
    dp[pos][evens][odds][prevOdd] =
        x + solve(pos + 1, evens, odds, arr[pos] % 2);
  } else {
    if (odds > 0) {
      int d = solve(pos + 1, evens, odds - 1, true);
      ans = min(ans, d + !prevOdd);
    }
    if (evens > 0) {
      int d = solve(pos + 1, evens - 1, odds, false);
      ans = min(ans, d + prevOdd);
    }
    dp[pos][evens][odds][prevOdd] = ans;
  }
  return dp[pos][evens][odds][prevOdd];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n;
  int odds = n / 2 + (n % 2);
  int evens = n / 2;
  int tmp = 0;
  for (int i = (1); i <= ((n)); ++i) {
    cin >> arr[i];
    if (i > 1 && arr[i] % 2 != arr[i - 1] % 2) tmp++;
    if (arr[i] != 0) {
      if (arr[i] % 2 == 0)
        evens--;
      else
        odds--;
    }
    for (int j = (0); j <= ((n)-1); ++j) {
      for (int k = (0); k <= ((n)-1); ++k) {
        dp[i][j][k][0] = dp[i][j][k][1] = -1;
      }
    }
  }
  if (n == 1) {
    cout << 0 << endl;
    return 0;
  }
  int ans = maxN;
  if (arr[1] == 0) {
    if (odds > 0) {
      ans = min(ans, solve(2, evens, odds - 1, true));
    }
    if (evens > 0) {
      ans = min(ans, solve(2, evens - 1, odds, false));
    }
    if (evens + odds == 0) ans = tmp;
  } else {
    if (evens > 0 || odds > 0) {
      ans = solve(2, evens, odds, arr[1] % 2 == 1);
    } else
      ans = tmp;
  }
  cout << ans;
  return 0;
}
