#include <bits/stdc++.h>
using namespace std;
const int N = (int)4e5 + 7;
const int M = 20;
int n, a[N];
vector<int> u[M];
set<int> s;
int t[M];
long long dp[(1 << M)];
int bits[M], top;
bool act[M];
long long score[M][M];
int cnt(int col, int p) {
  int l = 0, r = (int)u[col].size() - 1, ans = 0;
  while (l <= r) {
    int m = (l + r) / 2;
    if (u[col][m] <= p) {
      ans = m + 1;
      l = m + 1;
    } else {
      r = m - 1;
    }
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
    a[i]--;
    s.insert(a[i]);
  }
  int all = 0;
  for (auto &x : s) {
    t[x] = all++;
  }
  for (int i = 1; i <= n; i++) {
    a[i] = t[a[i]];
    u[a[i]].push_back(i);
  }
  for (int i = 0; i < all; i++) {
    for (int j = 0; j < all; j++) {
      if (i != j) {
        for (auto &it : u[i]) {
          score[i][j] += cnt(j, it);
        }
      }
    }
  }
  for (int mask = 1; mask < (1 << all); mask++) {
    top = 0;
    for (int bit = 0; (1 << bit) <= mask; bit++) {
      if (mask & (1 << bit)) {
        bits[top++] = bit;
        act[bit] = 1;
      }
    }
    dp[mask] = (1LL << 60);
    for (int i = 0; i < top; i++) {
      int x = bits[i];
      long long now = dp[mask - (1 << x)];
      for (int y = 0; y < all; y++) {
        if (act[y] == 0) {
          now += score[x][y];
        }
      }
      dp[mask] = min(dp[mask], now);
    }
    for (int i = 0; i < top; i++) {
      act[bits[i]] = 0;
    }
  }
  cout << dp[(1 << all) - 1] << "\n";
  return 0;
}
