public static boolean exist(char[][] board, String word) {
    	if (null == word || 0 == word.length()) return true; 
    	if (null == board || 0 == board.length) return false; 
    	int r = board.length;
    	int c = board[0].length;
        boolean[][] used = new boolean[r][c];
        for (int i = 0; i < r; i++) {
        	for (int j = 0; j < c; j++) {
        		if (dfs(board, word, i, j, 0, used)) return true; 
        	}
        }
    	return false;
    }