#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e6 + 5;
int n;
int tot;
int ch[maxn][2];
int root;
int s[maxn];
void insert(int &h, int d, int v) {
  if (!h) h = ++tot;
  s[h]++;
  if (d == -1) return;
  insert(ch[h][v >> d & 1], d - 1, v);
}
int f[maxn];
void dfs(int x) {
  if (!x) return;
  dfs(ch[x][0]);
  dfs(ch[x][1]);
  f[x] = min(f[ch[x][0]] + max(s[ch[x][1]] - 1, 0),
             f[ch[x][1]] + max(s[ch[x][0]] - 1, 0));
}
int main() {
  cin >> n;
  for (int i(1), endi(n); i <= endi; i++) {
    int x;
    scanf("%d", &x);
    insert(root, 30, x);
  }
  dfs(root);
  cout << f[root];
  return 0;
}
