public BoardNode[] findWord(String word){
		//Method finds any occurrence of a word on the board, returning an array of the path for first found

		//Complexity analysis -- finding start points is O(n), the search is more difficult to analyze, absolute worst case is 
		//where word is all one character, n/2 chars long and board is all the same char.  in this instance it is O(8^n) based on a
		//branching factor of 8 and a depth of n/2 done from each of the n startpoints.
		//Because searching stops at the first incorrect character, this will run significantly faster in the average case.
		//With a random character set, most searches will have only 1 startpoint, and the possible search paths will be pruned by
		//about 80% with each character searched.
		char firstChar=word.charAt(0);
		BoardNode[] path=null;
		//list of startpoints
		List<BoardNode> startPoints=new ArrayList<BoardNode>();
		for(int x=0;x<SIZEX+1;x++){
			for(int y=0;y<SIZEY+1;y++){
				if(gameBoard[x][y].getContents()==firstChar){
					startPoints.add(gameBoard[x][y]);
				}
			}
		}
		Iterator<BoardNode> iter=startPoints.iterator();
		//dfs on each startpoint, returning the first successful one
		while(iter.hasNext()){
			path=findWordFrom(iter.next(),word);
			if(path!=null){
				return path;
			}
		}
		//word not found
		return null;
	}