#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 9;
const int M = 20 + 1;
const long long INF = 1000 * 1000 * 1000 * 1LL * 1000 * 1000 * 1000;
int n;
long long d[1 << M];
long long cnt[M][M];
vector<int> col[M];
void init() {
  for (int i = 0; i < 20; i++) {
    for (int j = 0; j < 20; j++) {
      if (i == j) continue;
      if (col[i].size() == 0 || col[j].size() == 0) continue;
      int pos2 = 0;
      for (int pos1 = 0; pos1 < col[i].size(); pos1++) {
        while (true) {
          if (pos2 == col[j].size() - 1 || col[j][pos2 + 1] > col[i][pos1])
            break;
          pos2++;
        }
        if (col[i][pos1] > col[j][pos2]) cnt[i][j] += pos2 + 1;
      }
    }
  }
  for (int mask = 0; mask < (1 << 20); mask++) d[mask] = INF;
  d[0] = 0;
}
void solve() {
  init();
  for (int mask = 0; mask < (1 << 20); mask++) {
    vector<int> was;
    for (int i = 0; i < 20; i++) {
      if (mask & (1 << i)) was.push_back(i);
    }
    for (int i = 0; i < 20; i++) {
      if (mask & (1 << i)) continue;
      long long sum = 0;
      for (int j = 0; j < was.size(); j++) sum += cnt[was[j]][i];
      int nmask = mask | (1 << i);
      d[nmask] = min(d[nmask], d[mask] + sum);
    }
  }
  cout << d[(1 << 20) - 1] << endl;
}
int main() {
  scanf("%d", &n);
  for (int i = 0, x; i < n; i++) {
    scanf("%d", &x);
    col[--x].push_back(i);
  }
  solve();
  return 0;
}
