#include <stdio.h>
#include <string.h>
#include <math.h>
char map[6][6],copy[6][6],str[20];
const int INF=666;
int ans;
int flag[6][6];
bool Check(char copy[][6]){//检查所有棋子是不是都是一样的颜色
char ch=copy[0][0];
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
if(copy[i][j]!=ch)
return false;
return true;
}
void Change(int i,int j){//棋子颜色的翻转
copy[i][j]=(char)(‘b‘+‘w‘-copy[i][j]);
if(i!=0)
copy[i-1][j]=(char)(‘b‘+‘w‘-copy[i-1][j]);
if(j!=0)
copy[i][j-1]=(char)(‘b‘+‘w‘-copy[i][j-1]);
if(i!=3)
copy[i+1][j]=(char)(‘b‘+‘w‘-copy[i+1][j]);
if(j!=3)
copy[i][j+1]=(char)(‘b‘+‘w‘-copy[i][j+1]);
}
void BFS(){//暴力搜索加位运算
if(Check(map))//若是本身就已经是满足的情况,就不必翻转
ans=0;
else
for(int t=1;t<65536;t++){//枚举所有的翻转情况,并且分析
int num=t;
int step=0;
for(int coi=0;coi<4;coi++)
for(int coj=0;coj<4;coj++)
copy[coi][coj]=map[coi][coj];//复制棋子图
for(int i=0;i<4