#include <bits/stdc++.h>
using namespace std;
template <typename T>
bool chkmx(T &x, T y) {
  return x < y ? x = y, true : false;
}
template <typename T>
bool chkmn(T &x, T y) {
  return x > y ? x = y, true : false;
}
const int maxn = 2000;
const int inf = 1e9;
int n, ans, a[maxn + 5], last[maxn + 5], b[maxn + 5];
int dp[maxn + 5][maxn + 5], w[maxn + 5][2], cnt[maxn + 5];
int main() {
  scanf("%d", &n);
  for (int i = (1); i <= int(n); i++)
    scanf("%d", &a[i]), b[i] = a[i] = abs(a[i]);
  sort(b + 1, b + n + 1);
  int *end = unique(b + 1, b + n + 1);
  for (int i = (1); i <= int(n); i++) a[i] = lower_bound(b + 1, end, a[i]) - b;
  for (int i = (1); i <= int(n); i++) {
    for (int j = (i + 1); j <= int(n); j++) w[i][1] += (a[i] > a[j]);
    for (int j = (1); j <= int(i - 1); j++) w[i][0] += (a[i] > a[j]);
  }
  for (int i = (0); i <= int(n); i++)
    for (int j = (0); j <= int(n); j++) dp[i][j] = inf;
  dp[0][0] = 0;
  for (int i = (1); i <= int(n); i++) {
    for (int j = (0); j <= int(n); j++) {
      if (j) chkmn(dp[i][j], dp[last[a[i]]][j - 1] + w[i][1]);
      chkmn(dp[i][j], dp[last[a[i]]][j] + w[i][0] + j);
    }
    last[a[i]] = i;
  }
  for (int i = (1); i <= int(n); i++)
    if (last[i]) {
      int mn = inf;
      for (int j = (0); j <= int(n); j++) chkmn(mn, dp[last[i]][j]);
      ans += mn;
    }
  printf("%d", ans);
  return 0;
}
