#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
const int N = 2 * 100000 + 9;
const double pi = acos(-1);
class cmp {
 public:
  bool operator()(long long &A, long long &B) { return A > B; }
};
bool by_sec(const pair<long long, long long> &a,
            const pair<long long, long long> &b) {
  if ((abs(a.first) == abs(b.first))) return (abs(a.second) < abs(b.second));
  return (abs(a.first) < abs(b.first));
}
bool byth(const tuple<long long, long long, long double> &a,
          const tuple<long long, long long, long double> &b) {
  return (get<2>(a) < get<2>(b));
}
long double dist(complex<long double> a, complex<long double> b) {
  return (long double)abs(a - b);
}
long long fact[1000009], inv[1000009];
long long fp(long long a, long long b) {
  if (b == 0) return 1;
  long long ans = fp(a, b / 2);
  ans = (ans * ans) % mod;
  if (b % 2 != 0) ans = (ans * (a % mod)) % mod;
  return ans;
}
void FacInv(long long n) {
  fact[0] = inv[0] = 1;
  for (long long i = 1; i <= n; i++) {
    fact[i] = ((i % mod) * fact[i - 1] % mod) % mod;
    inv[i] = fp(fact[i], mod - 2);
  }
}
long long ncr(long long n, long long r) {
  return (((fact[n] * inv[r]) % mod) * inv[n - r]) % mod;
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long max(long long a, long long b) {
  if (a >= b)
    return a;
  else
    return b;
}
long long min(long long a, long long b) {
  if (a <= b)
    return a;
  else
    return b;
}
long long n;
vector<long long> v;
long long dp[105][105][105][3];
long long fun(long long d, long long e, long long o, long long c = 0,
              int pv = 2) {
  if (e < 0 || o < 0) return 1000000000000000009;
  if (d == n) {
    if (e == 0 && o == 0)
      return c;
    else
      return 1000000000000000009;
  }
  long long &ans = dp[d][c][o][pv];
  if (ans == -1) {
    if (v[d] == -1)
      ans = min(fun(d + 1, e - 1, o, c + (pv == 1), 0),
                fun(d + 1, e, o - 1, c + (pv == 0), 1));
    else
      ans = fun(d + 1, e, o, c + (pv != 2 && pv != (v[d] % 2)), v[d] % 2);
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  memset(dp, -1, sizeof(dp));
  ;
  cin >> n;
  v = vector<long long>(n);
  long long e = 0, o = 0;
  vector<long long> cnt(n + 1, -1);
  for (int i = 0; i < n; i++) {
    cin >> v[i];
    if (v[i] != 0) cnt[v[i]]++;
    if (v[i] != 0)
      v[i] = v[i] % 2;
    else
      v[i] = -1;
  }
  for (int i = 1; i <= n; i++)
    if (cnt[i] == -1) {
      if (i % 2 == 0)
        e++;
      else
        o++;
    }
  cout << fun(0, e, o) << "\n";
  return 0;
}
