#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <stdlib.h>
using namespace std;
 
int row, col;
char map[55][55];
int Min = 99999999;
 
int main(void)
{
//    freopen("B1018_input.txt", "r", stdin);
    
    cin >> row >> col;
    
    for(int i = 0; i < row; i++)
    {
        string input;
        cin >> input;
        
        for(int j = 0; j < col; j++)
        {
            map[i][j] = input[j];
        }
    }
    
    for(int i = 0; i+7 < row; i++)
    {
        for(int j = 0; j+7 < col; j++)
        {
            for(int cnt = 0; cnt < 2; cnt++)
            {
                // 칠해야하는 정사각형의 갯수 
                int paint = 0;
                
                // 왼쪽 위가 B 
                if(cnt == 0)
                {
                    // 행, 열의 첫번째 색깔 저장 
                    char row_paint = 'B';
                    char col_paint = 'B';
                    
                    for(int k = i; k < i+8; k++)
                    {
                        for(int m = j; m < j+8; m++)
                        {
                            if(map[k][m] != col_paint)
                            {
                                paint++;
                            }
                            
                            // 열이 바뀔떄마다 색깔 변경 
                            if(col_paint == 'B')
                            {
                                col_paint = 'W'
                            }
                            else
                            {
                                col_paint = 'B';
                            }
                        }
                        
                        // 행이 바뀔때마다 색깔 변경 
                        if(row_paint == 'B')
                        {
                            row_paint = 'W';
                            col_paint = 'W';
                        }
                        else
                        {
                            row_paint = 'B';
                            col_paint = 'B';
                        }
                    }    
                }    
                // 왼쪽 위가 W
                else
                {
                    // 행, 열의 첫번째 색깔 저장 
                    char row_paint = 'W';
                    char col_paint = 'W';
                    
                    for(int k = i; k < i+8; k++)
                    {
                        for(int m = j; m < j+8; m++)
                        {
                            if(map[k][m] != col_paint)
                            {
                                paint++;
                            }
                            
                            if(col_paint == 'B')
                            {
                                col_paint = 'W';
                            }
                            else
                            {
                                col_paint = 'B';
                            }
                        }
                        
                        if(row_paint == 'B')
                        {
                            row_paint = 'W';
                            col_paint = 'W';
                        }
                        else
                        {
                            row_paint = 'B';
                            col_paint = 'B';
                        }
                    }    
                }
                
                Min = min(Min, paint);
            }
        }
    }
    
    cout << Min;
    
    return 0;
}
cs

+ Recent posts