public WordVector lookUp(String wordToFind) {
		// first check if word is in clue
		if (clues.contains(wordToFind)) {
			// check row and reverse row
			int row = 0;
			int column = 0;
			for (int i = 0; i < n; i++) {
				StringBuffer rowString = new StringBuffer();
				rowString.append(puzzle[i]);
				column = rowString.indexOf(wordToFind);
				row = i;
				if (column != -1) {
					WordVector location = new WordVector(row, column,
							Direction.EASTERLY, wordToFind.length());
					return location;
				}
				row = i;
				column = m - 1 - rowString.reverse().indexOf(wordToFind);
				if (rowString.indexOf(wordToFind) != -1) {
					WordVector location = new WordVector(row, column,
							Direction.WESTERLY, wordToFind.length());
					return location;
				}
			}

			// check column and reverse column
			for (int i = 0; i < m; i++) {
				StringBuffer columnString = new StringBuffer();

				for (int j = 0; j < n; j++) {
					columnString.append(puzzle[j].charAt(i));
				}

				column = i;
				row = columnString.indexOf(wordToFind);
				if (row != -1) {
					WordVector location = new WordVector(row, column,
							Direction.SOUTHERLY, wordToFind.length());
					return location;
				}

				column = i;
				row = n - columnString.reverse().indexOf(wordToFind) - 1;
				if (columnString.indexOf(wordToFind) != -1) {
					WordVector location = new WordVector(row, column,
							Direction.NORTHERLY, wordToFind.length());
					return location;
				}

			}
		}

		return null;

	}