#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
int a[N];
int h[N], tt1 = 0;
int d[N], tt2 = 0;
int f[N];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  memset(f, 0x3f, sizeof f);
  f[1] = 0;
  for (int i = 1; i <= n; i++) {
    f[i] = min(f[i - 1] + 1, f[i]);
    while (0 <= tt1 && a[h[tt1]] < a[i]) f[i] = min(f[h[tt1]] + 1, f[i]), tt1--;
    if (0 <= tt1) {
      f[i] = min(f[h[tt1]] + 1, f[i]);
      if (a[h[tt1]] == a[i]) tt1--;
    }
    h[++tt1] = i;
    while (0 <= tt2 && a[d[tt2]] > a[i]) f[i] = min(f[d[tt2]] + 1, f[i]), tt2--;
    if (0 <= tt2) {
      f[i] = min(f[d[tt2]] + 1, f[i]);
      if (a[d[tt2]] == a[i]) tt2--;
    }
    d[++tt2] = i;
  }
  cout << f[n] << endl;
  return 0;
}
