#include <bits/stdc++.h>
using namespace std;
long long n, cnt[21][21], pos[21][400001], dp[1 << 20];
vector<long long> v[21];
signed main() {
  cin.tie(0);
  cout.tie(0);
  ios_base::sync_with_stdio(false);
  cin >> n;
  for (long long i = 1; i <= n; i++) {
    long long a;
    cin >> a;
    a--;
    v[a].push_back(i);
    pos[a][i]++;
  }
  for (long long i = 0; i < 20; i++) {
    for (long long j = 1; j <= n; j++) {
      pos[i][j] += pos[i][j - 1];
    }
  }
  for (long long i = 0; i < 20; i++) {
    for (long long j = 0; j < 20; j++) {
      if (i == j) continue;
      for (auto x : v[i]) {
        cnt[i][j] += pos[j][x];
      }
    }
  }
  dp[0] = 0;
  for (long long i = 1; i < (1 << 20); i++) {
    dp[i] = 1000000000000000000;
    for (long long j = 0; j < 20; j++) {
      if (i >> j & 1) {
        long long ans1 = 0;
        for (long long k = 0; k < 20; k++) {
          if (k == j) continue;
          if (i >> k & 1) ans1 += cnt[j][k];
        }
        dp[i] = min(dp[i], dp[i ^ (1 << j)] + ans1);
      }
    }
  }
  cout << dp[(1 << 20) - 1];
}
