#include
#include
#include
using namespace std;
int dp[30005][3];
int main()
{
int n;
cin >> n;
vector v(n);
for(int i = 0; i < n; i++) {
cin >> v[i];
v[i]--;
dp[i][0] = dp[i][1] = dp[i][2] = 2e9;
}
int result = 2e9;
dp[0][0] = (v[0] != 0);
dp[0][1] = (v[0] != 1);
dp[0][2] = (v[0] != 2);
for(int i = 1; i < n; i++) {
for(int j = 0; j <= 2; j++) {
for(int k = 0; k <= j; k++) {
dp[i][k] = min(dp[i][k], dp[i - 1][j] + (v[i] != k));
}
}
}
result = min(result, dp[n - 1][0]);
result = min(result, dp[n - 1][1]);
result = min(result, dp[n - 1][2]);
for(int i = 0; i < n; i++) {
dp[i][0] = dp[i][1] = dp[i][2] = 2e9;
}
reverse(v.begin(), v.end());
dp[0][0] = (v[0] != 0);
dp[0][1] = (v[0] != 1);
dp[0][2] = (v[0] != 2);
for(int i = 1; i < n; i++) {
for(int j = 0; j <= 2; j++) {
for(int k = 0; k <= j; k++) {
dp[i][k] = min(dp[i][k], dp[i - 1][j] + (v[i] != k));
}
}
}
result = min(result, dp[n - 1][0]);
result = min(result, dp[n - 1][1]);
result = min(result, dp[n - 1][2]);
cout << result << endl;
return 0;
}