#include <bits/stdc++.h>
using namespace std;
const int MAXN = 25;
const int MAXS = 1 << 20;
template <typename T>
void chkmax(T &x, T y) {
  x = max(x, y);
}
template <typename T>
void chkmin(T &x, T y) {
  x = min(x, y);
}
template <typename T>
void read(T &x) {
  x = 0;
  int f = 1;
  char c = getchar();
  for (; !isdigit(c); c = getchar())
    if (c == '-') f = -f;
  for (; isdigit(c); c = getchar()) x = x * 10 + c - '0';
  x *= f;
}
int n, u, dp[MAXS];
long long a[MAXN];
int bit[MAXN], cnt[MAXS];
long long sum[MAXS];
int tot, fcnt, gcnt, pos[MAXN];
long long f[MAXS], g[MAXS];
void work(int tot, int *pos, int &fcnt, long long *f) {
  fcnt = 0;
  for (int s = 0; s < (1 << tot); s++) {
    long long tmp = 0;
    for (int i = 1; i <= tot; i++)
      if (bit[i] & s) tmp += a[pos[i]];
    f[++fcnt] = 2 * tmp;
  }
  sort(f + 1, f + fcnt + 1);
}
bool check(int s) {
  if (cnt[s] == 1) return sum[s] == 0;
  tot = 0;
  if ((sum[s] + cnt[s]) % 2 == 0) return false;
  for (int i = 1; i <= n; i++)
    if (bit[i] & s) pos[++tot] = i;
  work(tot / 2, pos, fcnt, f);
  work(tot - tot / 2, pos + tot / 2, gcnt, g);
  int lft = 1 + 2 * (abs(sum[s]) < cnt[s]);
  long long L = sum[s] - cnt[s] + 1, R = sum[s] + cnt[s] - 1;
  for (int i = fcnt, j = 1; i >= 1; i--) {
    while (j <= gcnt && g[j] + f[i] < L) j++;
    for (int k = j; k <= gcnt && g[k] + f[i] <= R; k++)
      if (--lft == 0) return true;
  }
  return false;
}
int main() {
  read(n), u = (1 << n) - 1;
  for (int i = 1; i <= n; i++) read(a[i]), bit[i] = 1 << (i - 1);
  for (int s = 0; s <= u; s++) {
    for (int i = 1; i <= n; i++)
      if (bit[i] & s) {
        cnt[s]++;
        sum[s] += a[i];
      }
  }
  for (int s = 1; s <= u; s++)
    if (dp[s] == 0 && check(s)) {
      dp[s] = 1;
      int x = u ^ s;
      for (int t = x; t != 0; t = (t - 1) & x) chkmax(dp[s ^ t], dp[t] + dp[s]);
    }
  cout << n - dp[u] << endl;
  return 0;
}
