#include <bits/stdc++.h>
using namespace std;
#define int long long
using ll = long long;
using ull = unsigned long long;
using ii = pair<int, int>;
using vi = vector<int>;
using vll = vector<ll>;
using vii = vector<ii>;
const int mod = 1e9 + 7;
#define nl '\n'
#define ff first
#define ss second
#define pb push_back
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define debug(x) \
for (auto &e : x) \
cout << e << " "; \
cout << nl;
#define yes cout << "Yes" << nl;
#define no cout << "No" << nl;
int gcd(int a, int b)
{
if (b == 0)
return a;
else
return gcd(b, a % b);
}
int lcm(int a, int b)
{
return a * b / gcd(a, b);
}
void setIO(string name = "")
{
cin.tie(0)->sync_with_stdio(0);
if (sz(name))
{
freopen((name + ".in").c_str(), "r", stdin);
freopen((name + ".out").c_str(), "w", stdout);
}
}
ll t, x, m, k, q, n;
ll algoritmo2(unordered_map<int, int> where_box, vi boxes, vi movies)
{
ll algo2 = 0;
for (int i = 0; i < n - 1; i++)
{
algo2++;
int now = i;
while (movies[i] != boxes[i])
{
int j = where_box[movies[i]];
algo2 += abs(now - j);
swap(movies[i], movies[j]);
now = j;
}
// regreso
algo2 += abs(i - now);
// si es igual + 0
}
return algo2;
}
ll algoritmo1(unordered_map<int, int> where_box, vi boxes, vi movies)
{
ll algo1 = 0;
for (int i = 0; i < n - 1; i++)
{
algo1++;
if (movies[i] != boxes[i])
{
int j = where_box[movies[i]];
algo1 += abs(i - j) * 2;
swap(boxes[i], boxes[j]);
swap(where_box[boxes[i]], where_box[boxes[j]]);
}
}
return algo1;
}
void solve()
{
cin >> n;
unordered_map<int, int> where_mov;
unordered_map<int, int> where_box;
where_mov.reserve(n + 5);
where_box.reserve(n + 5);
vi movies(n);
vi boxes(n);
for (int i = 0; i < n; i++)
{
cin >> boxes[i] >> movies[i];
boxes[i]--, movies[i]--;
where_box[boxes[i]] = i; // aqui esta la caja
where_mov[movies[i]] = i; // aqui esta la peli
}
cout << algoritmo1(where_box, boxes, movies) << " " << algoritmo2(where_box, boxes, movies) << nl;
}
signed main()
{
setIO();
int tc = 1;
// cin >> tc;
while (tc--)
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwp1c2luZyBsbCA9IGxvbmcgbG9uZzsKdXNpbmcgdWxsID0gdW5zaWduZWQgbG9uZyBsb25nOwoKdXNpbmcgaWkgPSBwYWlyPGludCwgaW50PjsKdXNpbmcgdmkgPSB2ZWN0b3I8aW50PjsKdXNpbmcgdmxsID0gdmVjdG9yPGxsPjsKdXNpbmcgdmlpID0gdmVjdG9yPGlpPjsKCmNvbnN0IGludCBtb2QgPSAxZTkgKyA3OwojZGVmaW5lIG5sICdcbicKI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIHNzIHNlY29uZAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHN6KHgpIChpbnQpeC5zaXplKCkKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLCB4LmVuZCgpCgojZGVmaW5lIGRlYnVnKHgpICAgICAgICAgIFwKICAgIGZvciAoYXV0byAmZSA6IHgpICAgICBcCiAgICAgICAgY291dCA8PCBlIDw8ICIgIjsgXAogICAgY291dCA8PCBubDsKCiNkZWZpbmUgeWVzIGNvdXQgPDwgIlllcyIgPDwgbmw7CiNkZWZpbmUgbm8gY291dCA8PCAiTm8iIDw8IG5sOwoKaW50IGdjZChpbnQgYSwgaW50IGIpCnsKICAgIGlmIChiID09IDApCiAgICAgICAgcmV0dXJuIGE7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIGdjZChiLCBhICUgYik7Cn0KaW50IGxjbShpbnQgYSwgaW50IGIpCnsKICAgIHJldHVybiBhICogYiAvIGdjZChhLCBiKTsKfQoKdm9pZCBzZXRJTyhzdHJpbmcgbmFtZSA9ICIiKQp7CiAgICBjaW4udGllKDApLT5zeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBpZiAoc3oobmFtZSkpCiAgICB7CiAgICAgICAgZnJlb3BlbigobmFtZSArICIuaW4iKS5jX3N0cigpLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKChuYW1lICsgIi5vdXQiKS5jX3N0cigpLCAidyIsIHN0ZG91dCk7CiAgICB9Cn0KbGwgdCwgeCwgbSwgaywgcSwgbjsKCmxsIGFsZ29yaXRtbzIodW5vcmRlcmVkX21hcDxpbnQsIGludD4gd2hlcmVfYm94LCB2aSBib3hlcywgdmkgbW92aWVzKQp7CiAgICBsbCBhbGdvMiA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspCiAgICB7CiAgICAgICAgYWxnbzIrKzsKICAgICAgICBpbnQgbm93ID0gaTsKICAgICAgICB3aGlsZSAobW92aWVzW2ldICE9IGJveGVzW2ldKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGogPSB3aGVyZV9ib3hbbW92aWVzW2ldXTsKCiAgICAgICAgICAgIGFsZ28yICs9IGFicyhub3cgLSBqKTsKICAgICAgICAgICAgc3dhcChtb3ZpZXNbaV0sIG1vdmllc1tqXSk7CiAgICAgICAgICAgIG5vdyA9IGo7CiAgICAgICAgfQogICAgICAgIC8vIHJlZ3Jlc28KICAgICAgICBhbGdvMiArPSBhYnMoaSAtIG5vdyk7CiAgICAgICAgLy8gc2kgZXMgaWd1YWwgKyAwCiAgICB9CiAgICByZXR1cm4gYWxnbzI7Cn0KCmxsIGFsZ29yaXRtbzEodW5vcmRlcmVkX21hcDxpbnQsIGludD4gd2hlcmVfYm94LCB2aSBib3hlcywgdmkgbW92aWVzKQp7CiAgICBsbCBhbGdvMSA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspCiAgICB7CiAgICAgICAgYWxnbzErKzsKICAgICAgICBpZiAobW92aWVzW2ldICE9IGJveGVzW2ldKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGogPSB3aGVyZV9ib3hbbW92aWVzW2ldXTsKICAgICAgICAgICAgYWxnbzEgKz0gYWJzKGkgLSBqKSAqIDI7CiAgICAgICAgICAgIHN3YXAoYm94ZXNbaV0sIGJveGVzW2pdKTsKICAgICAgICAgICAgc3dhcCh3aGVyZV9ib3hbYm94ZXNbaV1dLCB3aGVyZV9ib3hbYm94ZXNbal1dKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gYWxnbzE7Cn0KCnZvaWQgc29sdmUoKQp7CiAgICBjaW4gPj4gbjsKICAgIHVub3JkZXJlZF9tYXA8aW50LCBpbnQ+IHdoZXJlX21vdjsKICAgIHVub3JkZXJlZF9tYXA8aW50LCBpbnQ+IHdoZXJlX2JveDsKICAgIHdoZXJlX21vdi5yZXNlcnZlKG4gKyA1KTsKICAgIHdoZXJlX2JveC5yZXNlcnZlKG4gKyA1KTsKICAgIHZpIG1vdmllcyhuKTsKICAgIHZpIGJveGVzKG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICB7CiAgICAgICAgY2luID4+IGJveGVzW2ldID4+IG1vdmllc1tpXTsKICAgICAgICBib3hlc1tpXS0tLCBtb3ZpZXNbaV0tLTsKICAgICAgICB3aGVyZV9ib3hbYm94ZXNbaV1dID0gaTsgIC8vIGFxdWkgZXN0YSBsYSBjYWphCiAgICAgICAgd2hlcmVfbW92W21vdmllc1tpXV0gPSBpOyAvLyBhcXVpIGVzdGEgbGEgcGVsaQogICAgfQoKICAgIGNvdXQgPDwgYWxnb3JpdG1vMSh3aGVyZV9ib3gsIGJveGVzLCBtb3ZpZXMpIDw8ICIgIiA8PCBhbGdvcml0bW8yKHdoZXJlX2JveCwgYm94ZXMsIG1vdmllcykgPDwgbmw7Cn0KCnNpZ25lZCBtYWluKCkKewogICAgc2V0SU8oKTsKICAgIGludCB0YyA9IDE7CiAgICAvLyBjaW4gPj4gdGM7CiAgICB3aGlsZSAodGMtLSkKICAgICAgICBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0=