#include <iostream>
//#include <fstream>

using namespace std;

//ifstream cin ("x.in"); ofstream cout ("x.out");

const int nmax = 1e5;
const int lim = 316;

int n;
int v[nmax + 1];
int first[nmax + 1], last[nmax + 1];

int f[lim + 5][nmax + 1];

int query (int x, int y, int val) {
    if (x > y) return 0;

    int bx = (x - 1) / lim + 1, by = (y - 1) / lim + 1;

    int sol = 0;
    if (bx == by) {
        for (int i = x; i <= y; ++ i) sol += (v[ i ] < val);
        return sol;
    }

    for (int i = bx + 1; i <= by - 1; ++ i) {
        sol += f[ i ][ val ];
    }

    for (int i = x; i <= bx * lim && i <= 2 * n; ++ i) sol += (v[ i ] < val);
    for (int i = (by - 1) * lim + 1; i <= y; ++ i) sol += (v[ i ] < val);
    return sol;
}

int main() {
    cin.sync_with_stdio(false);

    cin >> n;
    for (int i = 1; i <= 2 * n; ++ i) {
        cin >> v[ i ];
        last[ v[ i ] ] = i;
        if (first[ v[ i ] ] == 0) first[ v[ i ] ] = i;
    }

    for (int i = 1; i <= 2 * n; ++ i) {
        if (i == last[ v[ i ] ]) {
            v[ i ] = first[ v[ i ] ];
        } else {
            v[ i ] = nmax;
        }

        ++ f[(i - 1) / lim + 1][ v[ i ] ];
    }

    for (int i = 1; (i - 1) * lim + 1 <= 2 * n; ++ i) {
        for (int j = 1; j <= nmax; ++ j) {
            f[ i ][ j ] += f[ i ][j - 1];
        }
    }

    long long ans = 0;
    for (int i = 1; i <= n; ++ i) {
        ans += query(first[ i ] + 1, last[ i ] - 1, first[ i ]);
    }

    cout << ans << "\n";

    return 0;
}