private int explore(int startPostion, int depth, int dicrection, int lastFoundPlayer, LongBoard state,int threatPlacement, int emptyPostions) {
            if(depth == 0) {
                return threatPlacement;
            }
            long mask = 1l <<(startPostion + dicrection);
            if((state.boards[lastFoundPlayer] & mask) != 0) {
                return explore(startPostion + dicrection, depth-1, dicrection, lastFoundPlayer, state,-1,emptyPostions);
            } else if ((state.boards[Math.abs(lastFoundPlayer-1)] & mask) != 0) {
                return -1;
            } else {
                if(emptyPostions == 0) {
                    return explore(startPostion + dicrection, depth-1, dicrection, lastFoundPlayer, state,startPostion+dicrection,1);
                } else {
                    return -1;
                }
            }
        }