class Solution {
static int[] di = {1,0,1,1};
static int[] dj = {0,1,1,-1};
public int solution(String[] board) {
int cntO = 0;
int cntX = 0;
int madeO = 0;
int madeX = 0;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
char now = board[i].charAt(j);
if(now == 'O') cntO++;
else if(now == 'X') cntX++;
if(now != '.'){
for(int d=0;d<4;d++){
int nexti1 = i + di[d];
int nextj1 = j + dj[d];
int nexti2 = i + di[d] + di[d];
int nextj2 = j + dj[d] + dj[d];
if(nexti1<0 || nexti1>=3 || nextj1<0 || nextj1>=3 || nexti2<0 || nexti2>=3 || nextj2<0 || nextj2>=3) continue;
if(board[nexti1].charAt(nextj1)==now && board[nexti2].charAt(nextj2)==now){
if(now == 'O') madeO++;
else if(now == 'X') madeX++;
}
}
}
}
}
if(cntX > cntO || Math.abs(cntX - cntO) > 1) return 0;
if(madeO + madeX > 2) return 0;
if(madeX == 1 && cntO != cntX) return 0;
if(madeO == 1 && cntO == cntX) return 0;
return 1;
}
}

