#include <bits/stdc++.h>
using namespace std;
long long int read() {
  long long int x;
  scanf("%lld", &x);
  return x;
}
long long int dp[101][101][101][2], a[101];
const long long int INF = 1e8;
int main() {
  long long int n = read();
  long long int p = (n + 1) / 2, q = n / 2;
  for (long long int i = 0; i < n; i++) {
    a[i + 1] = read();
    if (a[i + 1] & 1)
      p--;
    else if (a[i + 1])
      q--;
  }
  for (long long int i = 0; i < n + 1; i++)
    for (long long int j = 0; j < n + 1; j++)
      for (long long int k = 0; k < n + 1; k++)
        dp[i][j][k][0] = dp[i][j][k][1] = INF;
  dp[p][q][0][0] = dp[p][q][0][1] = 0;
  for (long long int i = 1; i < n + 1; i++) {
    if (a[i] == 0) {
      for (long long int j = 0; j < n + 1; j++)
        for (long long int k = 0; k < n + 1; k++) {
          dp[j][k][i][0] = min(dp[j][k][i][0], dp[j][k + 1][i - 1][0]);
          dp[j][k][i][0] = min(dp[j][k][i][0], dp[j][k + 1][i - 1][1] + 1);
          dp[j][k][i][1] = min(dp[j][k][i][1], dp[j + 1][k][i - 1][1]);
          dp[j][k][i][1] = min(dp[j][k][i][1], dp[j + 1][k][i - 1][0] + 1);
        }
    } else {
      for (long long int j = 0; j < n + 1; j++)
        for (long long int k = 0; k < n + 1; k++) {
          dp[j][k][i][a[i] & 1] =
              min(dp[j][k][i][a[i] & 1], dp[j][k][i - 1][a[i] & 1]);
          dp[j][k][i][a[i] & 1] =
              min(dp[j][k][i][a[i] & 1], dp[j][k][i - 1][(a[i] + 1) & 1] + 1);
        }
    }
  }
  cout << min(dp[0][0][n][0], dp[0][0][n][1]) << endl;
}
