#include <bits/stdc++.h>
using namespace std;
void get_it_done() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
}
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
void swap(long long &a, long long &b) {
  a ^= b;
  b ^= a;
  a ^= b;
}
const long long N = 1e4 + 5;
long long dp[105][105][105][2];
long long n;
long long arr[N];
long long func(long long e, long long o, long long i, long long p) {
  if (e < 0 || o < 0) return 1e18;
  if (i >= n) return 0;
  if (dp[e][o][i][p] != -1) return dp[e][o][i][p];
  long long ans = 1e18;
  if (arr[i] == 0) {
    ans = min(func(e - 1, o, i + 1, 0) + p, func(e, o - 1, i + 1, 1) + 1 - p);
  } else {
    ans = func(e, o, i + 1, arr[i] % 2) + abs(arr[i] % 2 - p);
  }
  return dp[e][o][i][p] = ans;
}
int32_t main() {
  get_it_done();
  long long t = 1;
  while (t--) {
    cin >> n;
    map<long long, long long> m;
    for (long long i = 0; i < n; ++i) cin >> arr[i], m[arr[i]]++;
    memset(dp, -1, sizeof(dp));
    long long numo = 0;
    long long nume = 0;
    for (long long i = 1; i < n + 1; ++i) {
      if (m[i] > 0)
        continue;
      else {
        if (i & 1)
          numo++;
        else
          nume++;
      }
    }
    cout << min(func(nume, numo, 0, 1), func(nume, numo, 0, 0)) << "\n";
  }
}
