#include <stdio.h>
#include <stdlib.h>

int time = 0;

struct element
{
    int v1,v2;
};

void findAndChange( struct element tabla[] , int *niz , int i , int s , bool b)
{
    int br=0;

    if(b == true)
    {
        for(;tabla[br].v1 != i;) br++;

        if(s < i) tabla[br].v1 -=i-s;
        else tabla[br].v1 +=s-i;

        niz[i]--;
        niz[s]++;
    }

    else
    {
        for(;tabla[br].v2 != i;) br++;

        if(s < i) tabla[br].v2 -=i-s;
        else tabla[br].v2 +=s-i;

        niz[i]--;
        niz[s]++;
    }

    time++;

    return;
}

int main()
{
    int n;

    scanf("%d",&n);

    struct element tabla[n-1];
    int r[n-1];
    int k[n-1];

    for(int i=0;i<n;i++)
    {
        int v1,v2;

        scanf("%d",&v1);
        scanf("%d",&v2);

        tabla[i].v1 = v1-1;
        tabla[i].v2 = v2-1;

        r[i]=0;
        k[i]=0;
    }

    for(int i=0;i<n;i++)
    {
        r[tabla[i].v1] ++;
        k[tabla[i].v2] ++;
    }

    for(int i=0;i<n;i++)
    {
        int br=0;

        if(r[i]>=2)
            while(r[i]>=2)
            {
                for(int j=0;j<n;j++)
                    if(r[j]==0)
                    {
                        br = j;
                        break;
                    }

                findAndChange(tabla,r,i,br,true);
            }

        if(k[i]>=2)
            while(k[i]>=2)
            {
                 for(int j=0;j<n;j++)
                    if(k[j]==0)
                    {
                        br = j;
                        break;
                    }

                findAndChange(tabla,k,i,br,false);
            }
    }

    printf("%d",time);
}