/*
TASK:seq
LANG:C++
KEYW: swetko swetko.... i s 16 mb moje da se napi6e zada4ata(tuk e 24), a ina4e e golqma prostotiq ;)
*/

#include <cstdio>
#include <algorithm>

const int MAXN = 1 << 20;//1 000 000

int N, K;
int seq[MAXN];
int ref[MAXN];

int l[MAXN], r[MAXN];
int optl[MAXN], optr[MAXN];

int main () {
	scanf ("%d", &N);
	
	int i;
	for (i = 0; i < N; ++i) {
		scanf ("%d", seq + i);
		ref[i] = seq[i];
	}
	std::sort (ref, ref + N);
	K = std::unique (ref, ref + N) - ref;
	
	int pos;
	for (i = 0; i < K; ++i) {l[i] = INT_MAX; r[i] = -1;}
	for (i = 0; i < N; ++i) {
		pos = std::lower_bound (ref, ref + K, seq[i]) - ref;
		l[pos] <?= i * 2;
		r[pos] >?= i * 2 + 1;
	}
/*
	for (i = 0; i < K; ++i)
		printf ("%d -- %d %d\n", ref[i], l[i], r[i]);
*/
	for (i = K-2; i >= 0; --i) {
		optl[i] = (optl[i+1] + (l[i+1] < r[i] ? 2 : 0)) <? (optr[i+1] + 1);
		optr[i] = (optr[i+1] + (r[i+1] > l[i] ? 2 : 0)) <? (optl[i+1] + 1);
	}
	printf ("%d\n", optl[0] <? optr[0]);

	return 0;
}
