#include <bits/stdc++.h>
long long mod = 1000000007;
long long mod2 = 998244353;
long long OO = 1e18;
long long david_villa_pow(long long x, long long n) {
  if (n == 0) return 1;
  long long u = david_villa_pow(x, n / 2);
  u = ((u) * (u));
  if (n % 2 == 1) u = ((u) * (x));
  return u;
}
long long up(long long x, long long y) {
  if (x % y == 0) return x / y;
  return x / y + 1;
}
using namespace std;
long long n, c[30][30], a[500200];
long long dp[2300300];
long long vis[30];
long long cnt[30];
long long mx = -OO;
long long david_villa(long long mask) {
  long long i, j;
  ;
  bool Z = 0;
  for (i = 1; i <= mx; i++) {
    if (vis[i] && !((1 << i) & mask)) Z = 1;
  }
  if (!Z) return 0;
  if (dp[mask] + 1) return dp[mask];
  long long mn = OO;
  for (i = 1; i <= mx; i++) {
    if (vis[i] && !((1 << i) & mask)) {
      long long TotalCost = 0;
      for (j = 1; j <= mx; j++)
        if (i != j && vis[j] && !((1 << j) & mask)) TotalCost += c[i][j];
      mn = min(mn, david_villa(mask | (1 << i)) + TotalCost);
    }
  }
  return dp[mask] = mn;
}
int main() {
  long long i, j;
  ;
  cin >> n;
  for (i = 0; i < n; i++) {
    cin >> a[i];
    vis[a[i]] = 1;
    mx = max(mx, a[i]);
  }
  for (i = 0; i < n; i++) {
    for (j = 1; j <= 20; j++) {
      if (a[i] != j) {
        c[a[i]][j] += cnt[j];
      }
    }
    cnt[a[i]]++;
  }
  memset(dp, -1, sizeof dp);
  cout << david_villa(0);
  return 0;
}
