#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
int dp[100 + 10][101][101][2];
int a[101];
int main() {
  int ji, ou;
  ji = ou = 0;
  int n;
  cin >> n;
  for (int i = 1; i <= n; ++i) {
    cin >> a[i];
  }
  for (int i = 1; i <= n; ++i) {
    int ok = 2;
    for (int j = 1; j <= n; ++j) {
      if (a[j] == i) ok = 0;
    }
    if (ok) {
      if (i & 1) {
        ji++;
      } else {
        ou++;
      }
    }
  }
  memset(dp, 63, sizeof(dp));
  if (a[1]) {
    dp[1][ji][ou][a[1] & 1] = 0;
  } else {
    if (ji) dp[1][ji - 1][ou][1] = 0;
    if (ou) dp[1][ji][ou - 1][0] = 0;
  }
  for (int i = 2; i <= n; ++i)
    for (int j = 0; j <= ji; ++j)
      for (int k = 0; k <= ou; ++k) {
        if (a[i]) {
          dp[i][j][k][a[i] & 1] =
              min(dp[i - 1][j][k][0] + bool(((a[i] & 1) + 0) % 2),
                  dp[i - 1][j][k][1] + bool(((a[i] & 1) + 1) % 2));
        } else {
          if (j != ji)
            dp[i][j][k][1] = min(dp[i - 1][j + 1][k][0] + bool(((1) + 0) % 2),
                                 dp[i - 1][j + 1][k][1] + bool(((1) + 1) % 2));
          if (k != ou)
            dp[i][j][k][0] = min(dp[i - 1][j][k + 1][0] + bool(((0) + 0) % 2),
                                 dp[i - 1][j][k + 1][1] + bool(((0) + 1) % 2));
        }
      }
  int res = INF;
  for (int i = 0; i <= ji; ++i)
    for (int j = 0; j <= ou; ++j)
      for (int flag = 0; flag <= 1; ++flag) res = min(res, dp[n][i][j][flag]);
  cout << res;
  return 0;
}
