#include<iostream>
#include<cstring>
using namespace std;
int f[1010][1010];
int main()
{
string s="0";
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int k;
cin>>k;
s+=to_string(k);
}
for(int len=2;len<=n;len++)
{
for(int i=1;i+len-1<=n;i++)
{
int j=i+len-1;
if(s[i]==s[j]) f[i][j]=f[i+1][j-1];
else f[i][j]=min(f[i+1][j],f[i][j-1])+1;
}
}
int sum=f[1][n];
memset(f,0,sizeof f);
for(int i=1;i<n;i++)
{
f[i][i]=1; //一个字串本身就是回文串
if(s[i]==s[i+1]) f[i][i+1]=1; //两个可能是回文串
}
int count=0;
for(int len=3;len<=n;len++)
{
for(int i=1;i+len-1<=n;i++)
{
int j=i+len-1;
if(s[i]==s[j]&&f[i+1][j-1]==1)
{
f[i][j]=1;
count++;
}
}
}
if(f[1][n]==1) cout<<1<<endl;
else cout<<sum-count+1<<endl;
}