#include <bits/stdc++.h>
using namespace std;
int sir[5001] , minim[5001] , aparitii[5001][5001];
int main ()
{
ios :: sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int lungime;
cin >> lungime;
for (int indice = 1 ; indice <= lungime ; indice++)
{
cin >> sir[indice];
for (int __indice = 1 ; __indice < indice ; __indice++)
{ aparitii[sir[__indice]][sir[indice]] = 1; }
}
for (int linie = 1 ; linie <= lungime ; linie++) {
for (int coloana = 1 ; coloana <= lungime ; coloana++)
{ aparitii[linie][coloana] += aparitii[linie - 1][coloana] + aparitii[linie][coloana - 1] - aparitii[linie - 1][coloana - 1]; }
}
for (int limita = 1 ; limita <= lungime ; limita++)
{
minim[limita] = INT32_MAX;
for (int luat = 1 , termen = 0 ; luat <= limita ; luat++)
{
termen += (aparitii[limita - luat + 1][limita] - aparitii[limita - luat][limita]) - (aparitii[limita - luat + 1][limita - luat + 1] - aparitii[limita - luat][limita - luat + 1]);
minim[limita] = min(minim[limita] , minim[limita - luat] + aparitii[limita][limita - luat] - aparitii[limita - luat][limita - luat] + termen);
}
}
cout << minim[lungime];
return 0;
}