public static boolean innersolveSudoku(char[][] board) {
        for (int i = 0; i < board.length; i++) {
        	for (int j = 0; j < board[i].length; j++) {
        		if ('.' == board[i][j]) {
        			for (int k = 0; k < 9; k++) {
        				board[i][j] = (char) ('1' + k);
        				if (isValidSudoku(board)) {
        					if (innersolveSudoku(board)) return true; 
        				}
        				board[i][j] = '.';
        			}
        			return false;
        		}
        	}
        }
        return true;
    }