#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <queue>
#include <map>
#include <iostream>
#include <string>
#include <math.h>
#include <set>
#include <list>
#include <climits>
#include <string.h>
#include <deque>
#include <functional>
using namespace std;
typedef long long ll;
#define INF 1000000000
typedef pair<int, int> P;
typedef pair<ll, pair<ll, ll>> PP;
typedef pair<pair<int, int>, pair<int, int>> PPP;
int gox[4] = { 0,0,1,-1 };
int goy[4] = { 1,-1,0,0 };
int n;
map<int, int> check;
bool numvisited[100005];
bool visited[100005];
int main() {
scanf("%d", &n);
vector<int> v;
vector<int> origin;
for (int i = 1; i <= n; i++) origin.push_back(i);
for (int i = 1; i <= n; i++) {
int num;
scanf("%d", &num);
v.push_back(num);
}
sort(v.begin(),v.end());
vector<int>::iterator it;
for (int i = 1; i <= n; i++) {
it = lower_bound(v.begin(), v.end(), i);
if (*it == i) {
numvisited[i] = true; // 1~n까지의 숫자들을 체크
}
}
for (int i = 0; i < v.size(); i++) {
it = lower_bound(origin.begin(), origin.end(), v[i]);
if (it == origin.end()) continue;
if (*it == v[i]) {
if (check.count(v[i]) == 0) {
check[v[i]] = 1; // 입력받은 배열에서 같은 숫자가 있는지 체크
visited[i] = true;
}
}
}
vector<int> real,real2;
for (int i = 0; i < v.size(); i++) {
if (!visited[i]) {
real.push_back(v[i]);
}
}
for (int i = 1; i <= n; i++) {
if (!numvisited[i]) {
real2.push_back(i);
}
}
ll sum = 0;
for (int i = 0; i < real.size(); i++) {
sum += abs(real[i] - real2[i]); // 그차이를 누적시킴
}
printf("%lld\n", sum);
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWF0aC5oPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPGNsaW1pdHM+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGRlcXVlPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CiNkZWZpbmUgSU5GIDEwMDAwMDAwMDAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBQOwp0eXBlZGVmIHBhaXI8bGwsIHBhaXI8bGwsIGxsPj4gUFA7CnR5cGVkZWYgcGFpcjxwYWlyPGludCwgaW50PiwgcGFpcjxpbnQsIGludD4+IFBQUDsKaW50IGdveFs0XSA9IHsgMCwwLDEsLTEgfTsKaW50IGdveVs0XSA9IHsgMSwtMSwwLDAgfTsKaW50IG47Cm1hcDxpbnQsIGludD4gY2hlY2s7CmJvb2wgbnVtdmlzaXRlZFsxMDAwMDVdOwpib29sIHZpc2l0ZWRbMTAwMDA1XTsKaW50IG1haW4oKSB7CglzY2FuZigiJWQiLCAmbik7Cgl2ZWN0b3I8aW50PiB2OwoJdmVjdG9yPGludD4gb3JpZ2luOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBvcmlnaW4ucHVzaF9iYWNrKGkpOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJaW50IG51bTsKCQlzY2FuZigiJWQiLCAmbnVtKTsKCQl2LnB1c2hfYmFjayhudW0pOwoJfQoJc29ydCh2LmJlZ2luKCksdi5lbmQoKSk7Cgl2ZWN0b3I8aW50Pjo6aXRlcmF0b3IgaXQ7Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQlpdCA9IGxvd2VyX2JvdW5kKHYuYmVnaW4oKSwgdi5lbmQoKSwgaSk7CgkJaWYgKCppdCA9PSBpKSB7CgkJCW51bXZpc2l0ZWRbaV0gPSB0cnVlOyAvLyAxfm7quYzsp4DsnZgg7Iir7J6Q65Ok7J2EIOyytO2BrAoJCX0KCX0KCWZvciAoaW50IGkgPSAwOyBpIDwgdi5zaXplKCk7IGkrKykgewoJCWl0ID0gbG93ZXJfYm91bmQob3JpZ2luLmJlZ2luKCksIG9yaWdpbi5lbmQoKSwgdltpXSk7CgkJaWYgKGl0ID09IG9yaWdpbi5lbmQoKSkgY29udGludWU7CgkJaWYgKCppdCA9PSB2W2ldKSB7CgkJCWlmIChjaGVjay5jb3VudCh2W2ldKSA9PSAwKSB7CgkJCQljaGVja1t2W2ldXSA9IDE7IC8vIOyeheugpeuwm+ydgCDrsLDsl7Tsl5DshJwg6rCZ7J2AIOyIq+yekOqwgCDsnojripTsp4Ag7LK07YGsCgkJCQl2aXNpdGVkW2ldID0gdHJ1ZTsKCQkJfQoJCX0KCX0KCXZlY3RvcjxpbnQ+IHJlYWwscmVhbDI7Cglmb3IgKGludCBpID0gMDsgaSA8IHYuc2l6ZSgpOyBpKyspIHsKCQlpZiAoIXZpc2l0ZWRbaV0pIHsKCQkJcmVhbC5wdXNoX2JhY2sodltpXSk7CgkJfQoJfQoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJaWYgKCFudW12aXNpdGVkW2ldKSB7CgkJCXJlYWwyLnB1c2hfYmFjayhpKTsKCQl9Cgl9CglsbCBzdW0gPSAwOwoJZm9yIChpbnQgaSA9IDA7IGkgPCByZWFsLnNpemUoKTsgaSsrKSB7CgkJc3VtICs9IGFicyhyZWFsW2ldIC0gcmVhbDJbaV0pOyAvLyDqt7jssKjsnbTrpbwg64iE7KCB7Iuc7YK0Cgl9CglwcmludGYoIiVsbGRcbiIsIHN1bSk7CglyZXR1cm4gMDsKfQ==