#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
const long long INF = 2e15;
const long long MOD = 998244353;
const long long MB = 20;
void solve() {
  long long n;
  cin >> n;
  vector<long long> a(n + 1);
  for (long long i = 1; i <= n; i++) {
    cin >> a[i];
  }
  long long odd = n / 2 + n % 2, even = n / 2;
  vector<vector<vector<vector<long long>>>> dp(
      2, vector<vector<vector<long long>>>(
             n + 1, vector<vector<long long>>(
                        odd + 1, vector<long long>(even + 1, INF))));
  dp[0][0][0][0] = 0;
  dp[1][0][0][0] = 0;
  for (long long i = 1; i <= n; i++) {
    for (long long j = 0; j <= odd; j++) {
      for (long long c = 0; c <= even; c++) {
        if (a[i]) {
          if (a[i] % 2)
            dp[1][i][j][c] =
                j ? min(dp[0][i - 1][j - 1][c] + 1, dp[1][i - 1][j - 1][c])
                  : INF;
          else
            dp[0][i][j][c] =
                c ? min(dp[0][i - 1][j][c - 1], dp[1][i - 1][j][c - 1] + 1)
                  : INF;
        } else {
          dp[1][i][j][c] =
              j ? min(dp[0][i - 1][j - 1][c] + 1, dp[1][i - 1][j - 1][c]) : INF;
          dp[0][i][j][c] =
              c ? min(dp[0][i - 1][j][c - 1], dp[1][i - 1][j][c - 1] + 1) : INF;
        }
      }
    }
  }
  cout << min(dp[0][n][odd][even], dp[1][n][odd][even]);
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  cout.precision(12);
  solve();
}
