class Solution {
public:
int helper(vector<int>& nums, int b1, int b2){
int n = nums.size();
int non1 = 0, non2 = 0, non3 = 0;
for(int i = 0; i <= b1; i++){
if(nums[i] != 1)
non1++;
}
for(int i = b1+1; i <= b2; i++){
if(nums[i] != 2)
non2++;
}
for(int i = b2+1; i < n; i++){
if(nums[i] != 3)
non3++;
}
return non1+non2+non3;
}
int helper2(vector<int>& nums, int b, int n1, int n2){
int n = nums.size();
int tmp1 = 0, tmp2 = 0;
for(int i = 0; i <= b; i++){
if(nums[i] != n1)
tmp1++;
}
for(int i = b+1; i < n; i++){
if(nums[i] != n2)
tmp2++;
}
return tmp1+tmp2;
}
int minimumOperations(vector<int>& nums){
int n = nums.size();
if(n == 1)
return 0;
int ans = n;
for(int b1 = 0; b1 < n; b1++){
for(int b2 = 0; b2 < n; b2++){
ans = min(ans, helper(nums, b1, b2));
}
}
for(int i = 0; i < n; i++){
ans = min(ans, helper2(nums, i, 1, 2));
}
for(int i = 0; i < n; i++){
ans = min(ans, helper2(nums, i, 2, 3));
}
for(int i = 0; i < n; i++){
ans = min(ans, helper2(nums, i, 1, 3));
}
int non1 = 0, non2 = 0, non3 = 0;
for(int i = 0; i < n; i++){
if(nums[i] != 1)
non1++;
if(nums[i] != 2)
non2++;
if(nums[i] != 3)
non3++;
}
return min(ans, min(min(non1, non2), non3));
}
};