#include <bits/stdc++.h>
using namespace std;
inline int read(int f = 1, int x = 0, char ch = ' ') {
  while (!isdigit(ch = getchar()))
    if (ch == '-') f = -1;
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  return f * x;
}
const int N = 1e2 + 5;
int n, c[2], p[N], q[N], f[2][N][N][N];
int main() {
  n = read();
  for (int i = 1; i <= n; ++i)
    p[i] = q[i] = read(), p[i] &= 1, c[p[i]] += q[i] != 0;
  c[0] = n / 2 - c[0], c[1] = n - n / 2 - c[1];
  memset(f, 0x3f, sizeof(f)), f[0][0][0][0] = f[1][0][0][0] = 0;
  for (int i = 1; i <= n; ++i)
    for (int j = 0; j <= c[0]; ++j)
      for (int k = 0; k <= c[1]; ++k)
        if (q[i])
          f[p[i]][i][j][k] = min(f[0][i - 1][j][k] + (0 ^ p[i]),
                                 f[1][i - 1][j][k] + (1 ^ p[i]));
        else {
          if (j)
            f[0][i][j][k] = min(f[0][i][j][k], f[0][i - 1][j - 1][k]),
            f[0][i][j][k] = min(f[0][i][j][k], f[1][i - 1][j - 1][k] + 1);
          if (k)
            f[1][i][j][k] = min(f[1][i][j][k], f[1][i - 1][j][k - 1]),
            f[1][i][j][k] = min(f[1][i][j][k], f[0][i - 1][j][k - 1] + 1);
        }
  printf("%d\n", min(f[0][n][c[0]][c[1]], f[1][n][c[0]][c[1]]));
  return 0;
}
