using
System;
public
class
GFG{
static
void
reverseColumns(
int
[,] arr)
{
int
C = arr.GetLength(1);
for
(
int
i = 0; i < C; i++){
for
(
int
j = 0, k = C - 1; j < k; j++, k--){
int
temp = arr[j ,i];
arr[j, i] = arr[k ,i];
arr[k, i] = temp;
}
}
}
static
void
transpose(
int
[, ] arr)
{
int
R = arr.GetLength(0);
int
C = arr.GetLength(1);
for
(
int
i = 0; i < R; i++){
for
(
int
j = i; j < C; j++){
int
temp = arr[j,i];
arr[j,i] = arr[i,j];
arr[i,j] = temp;
}
}
}
static
void
rotate(
int
[,] arr)
{
transpose(arr);
reverseColumns(arr);
}
static
int
solve(
int
[,] v,
int
n)
{
double
Sum = 0.0;
int
[,] c =
new
int
[n,n];
for
(
int
i = 0; i < n; i++) {
for
(
int
j = 0; j < n; j++) {
c[i,j] = 1;
}
}
for
(
int
t = 0; t < 4; t++) {
rotate(v);
for
(
int
i = 0; i < n; i++) {
for
(
int
j = 0; j < n; j++) {
if
(v[i,j] == 1)
c[i,j]++;
}
}
}
for
(
int
i = 0; i < n; i++) {
for
(
int
j = 0; j < n; j++) {
Sum += Math.Min(c[i,j], 4 - c[i,j]);
}
}
return
(
int
)Math.Round(Sum / 4);
}
static
public
void
Main (){
int
[,] v
=
new
int
[,] { { 1, 0, 0 }, { 0, 1, 0 }, { 1, 0, 1 } };
int
N = 3;
Console.Write(solve(v, N));
}
}