#include <bits/stdc++.h>
using namespace std;
const int maxn = 200005;
struct node {
  long long num, a, b;
  int d;
} ans[maxn];
bool cmp1(node x, node y) { return x.a < y.a; }
bool cmp2(node x, node y) { return x.b < y.b; }
int main() {
  int n;
  scanf("%d", &n);
  int d1, d2, cnt;
  long long sum = 0;
  d1 = 0;
  for (int i = 0; i < n; ++i) {
    scanf("%I64d", &ans[i].num);
    long long number = (long long)sqrt(ans[i].num);
    long long x = number * number;
    if (x == ans[i].num) {
      ++d1;
      ans[i].d = 1;
    } else
      ans[i].d = 0;
    long long y = (number + 1) * (number + 1);
    ans[i].a = min(ans[i].num - x, y - ans[i].num);
    if (max(ans[i].num - x, y - ans[i].num) > 1)
      ans[i].b = 1;
    else
      ans[i].b = 2;
  }
  d2 = n - d1;
  if (d2 > d1) {
    cnt = n / 2 - d1;
    sort(ans, ans + n, cmp1);
    for (int i = 0; i < n; ++i) {
      if (ans[i].a != 0 && ans[i].d == 0) {
        sum += ans[i].a;
        --cnt;
        if (cnt == 0) break;
      }
    }
  } else if (d1 > d2) {
    cnt = n / 2 - d2;
    sort(ans, ans + n, cmp2);
    for (int i = 0; i < n; ++i) {
      if (ans[i].b != 0 && ans[i].d == 1) {
        sum += ans[i].b;
        --cnt;
        if (cnt == 0) break;
      }
    }
  }
  printf("%I64d\n", sum);
  return 0;
}
