#include <bits/stdc++.h>
using namespace std;
long long int Npow(long long int x, long long int n,
                   long long int M = 1000000007) {
  if (n == 0)
    return 1;
  else if (n % 2 == 0)
    return Npow((x * x) % M, n / 2, M);
  return (x * Npow((x * x) % M, (n - 1) / 2, M)) % M;
}
void print() { ; }
template <typename T, typename... Types>
void print(T var1, Types... var2) {
  cout << var1 << " ";
  print(var2...);
}
template <typename T>
void show(T *a, int size) {
  int i;
  cout << endl << "The array is ";
  for (long long i = 0; i < size; ++i) {
    cout << a[i] << " ";
  }
  cout << endl;
}
template <typename T>
void show_vector(vector<T> v) {
  cout << endl << "The vector is ";
  int i;
  for (long long i = 0; i < v.size(); ++i) {
    cout << v[i] << " ";
  }
  cout << endl;
}
long long int a[101];
vector<long long> odds, evens, v;
long long int visited[101];
long long int func_[101][101][101][3];
long long int n;
vector<long long> final;
long long int func(long long int odd, long long int even, long long int index,
                   long long int last) {
  if (index == n) {
    return 0;
  }
  if (a[index] != 0) {
    long long int vals = 0;
    if (last == 1) {
      if (a[index] % 2 == 0) {
        vals++;
      }
    }
    if (last == 0) {
      if (a[index] % 2) {
        vals++;
      }
    }
    return func_[odd][even][index][last] =
               vals + func(odd, even, index + 1, a[index] % 2);
  }
  if (func_[odd][even][index][last] != -1) {
    return func_[odd][even][index][last];
  }
  long long int vals1 = 1000000007, vals2 = 1000000007;
  if (odd) {
    vals1 = 0;
    if (last == 0) {
      vals1++;
    }
    vals1 += func(odd - 1, even, index + 1, 1);
  }
  if (even) {
    vals2 = 0;
    if (last == 1) {
      vals2++;
    }
    vals2 += func(odd, even - 1, index + 1, 0);
  }
  return func_[odd][even][index][last] = min(vals1, vals2);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  memset(func_, -1, sizeof(func_));
  cin >> n;
  for (long long i = 0; i < n; ++i) {
    cin >> a[i];
    visited[a[i]] = 1;
  }
  for (long long i = 1; i < n + 1; ++i) {
    if (!visited[i]) {
      if (i % 2) {
        odds.push_back(i);
      } else {
        evens.push_back(i);
      }
    }
  }
  cout << func(odds.size(), evens.size(), 0, 2);
  return 0;
}
