#include <cstdio>
#include <algorithm>
#include <vector>

#define lim 320

#define f first
#define s second
#define mp make_pair

using namespace std;

int v[100010], ap[100010], cit[100010];
vector < pair <int, int> > bloc[350];

bool cmp (pair <int, int> a, pair <int, int> b)
{
    return (a.s < b.s);
}

int main ()
{
   // freopen ("cc.in", "r", stdin);

    int n;
    scanf ("%d", &n);

    for (int i = 1; i <= 2 * n; ++i)
    {
        scanf ("%d", &v[i]);
        ap[v[i]] = i;
    }

    int nrb = 0;
    for (int i = 1; i <= 2 * n; ++i)
    {
        if (ap[v[i]] == i) continue;
        nrb = max (nrb, i/lim);

        bloc[i/lim].push_back (mp (i, ap[v[i]]));
    }

    int ri = lim - 1;
    long long nr = 0LL;
    for (int i = 0; i <= nrb; ++i, ri += lim)
    {
        sort (bloc[i].begin (), bloc[i].end (), cmp);

        for (int i = 1; i <= 50005; ++i)
            cit[i] = 0;

        int lst = ri + 1;
        int ah = 0;

        for (auto &it : bloc[i])
        {
            for (int j = lst; j < it.s; ++j)
            {
                ++cit[v[j]];
                if (cit[v[j]] == 1) ++ah;
                else --ah;
            }

            for (int j = it.f + 1; j <= min (it.s - 1, ri); ++j)
            {
                ++cit[v[j]];
                if (cit[v[j]] == 1) ++ah;
                else --ah;
            }

            nr += 1LL * ah;
            lst = max (lst, it.s);

            for (int j = it.f + 1; j <= min (it.s - 1, ri); ++j)
            {
                --cit[v[j]];
                if (cit[v[j]] == 1) ++ah;
                else --ah;
            }
        }
    }

    printf ("%lld\n", nr / 2LL);

    return 0;
}