#include <bits/stdc++.h>
using namespace std;
int dp[105][105][105][2], p[105], pre[105];
int odd, even;
int main() {
  std::ios::sync_with_stdio(false);
  memset(dp, 0x3f, sizeof(dp));
  int n;
  cin >> n;
  dp[0][0][0][0] = dp[0][0][0][1] = 0;
  for (int i = 1; i <= n; i++) {
    cin >> p[i];
    if (p[i]) {
      if (p[i] & 1)
        ++odd;
      else
        ++even;
      pre[i] = pre[i - 1];
    } else
      pre[i] = pre[i - 1] + 1;
  }
  even = n / 2 - even;
  odd = (n + 1) / 2 - odd;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j <= even; j++)
      for (int k = 0; k <= odd; k++) {
        if (p[i]) {
          if (j + k <= pre[i])
            if (p[i] % 2 == 0)
              dp[i][j][k][0] = min(dp[i - 1][j][k][0], dp[i - 1][j][k][1] + 1);
            else
              dp[i][j][k][1] = min(dp[i - 1][j][k][0] + 1, dp[i - 1][j][k][1]);
        } else if (j + k <= pre[i])
          dp[i][j][k][0] =
              min(dp[i - 1][j - 1][k][0], dp[i - 1][j - 1][k][1] + 1),
          dp[i][j][k][1] =
              min(dp[i - 1][j][k - 1][0] + 1, dp[i - 1][j][k - 1][1]);
      }
  cout << min(dp[n][even][odd][0], dp[n][even][odd][1]) << endl;
  return 0;
}
