#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e3 + 5;
int n, m, k, sy;
int cas;
vector<int> v[25];
long long val[25][25];
long long dp[1100000];
signed main() {
  scanf("%d", &n);
  for (int i = 1, x; i <= n; i++) {
    scanf("%d", &x);
    v[x].push_back(i);
  }
  for (int i = 1; i <= 20; i++) {
    for (int j = 1; j <= 20; j++) {
      if (i == j) continue;
      for (int p = 0; p < v[i].size(); p++) {
        if (v[j].empty() || v[j][0] > v[i][p]) continue;
        val[i][j] +=
            lower_bound(v[j].begin(), v[j].end(), v[i][p]) - v[j].begin();
      }
    }
  }
  int tot = 1 << 20;
  memset(dp, 0x3f, sizeof dp);
  dp[0] = 0;
  for (int i = 0; i < tot; ++i) {
    for (int j = 0; j < 20; ++j) {
      if (!(i >> j & 1)) {
        long long ans = 0;
        for (int k = 0; k < 20; ++k)
          if ((i >> k) & 1) ans += val[k + 1][j + 1];
        dp[i | (1 << j)] = min(dp[i | (1 << j)], dp[i] + ans);
      }
    }
  }
  printf("%lld\n", dp[tot - 1]);
  return 0;
}
