private Response takeAnswer() throws IOException{ //Implementation to take answer input. Used for storing user responses and storing answer keys.
		String s;
		HashMap<String, ArrayList<String>> dictAns = new HashMap<String, ArrayList<String>>(); //HashMap to pass to Response
		
		for (int i=0; i < getLeft().size(); i++){ //Assign ranks for every value
			@SuppressWarnings("unchecked")
			ArrayList<String> copy = (ArrayList<String>) right.clone(); //Replacement of right to allow popping off options
			ArrayList<String> rank = new ArrayList<String>(); //Stores the matches
			Out.getDisp().renderLine("Enter the values for " + getLeft().get(i) + ":");
			Out.getDisp().renderLine("Type \"-END-\" when finished for the current key.");
			
			boolean isEnd = false; //Boolean to keep looping until valid input confirmed
			while (!isEnd){ //Input loop
				boolean validInput = false;
				while (!validInput){ //Validity loop
					s = Input.inputString();
					if (s.equals("-END-")){ //No more matches to this Option
						copy.clear(); //Skip for loop by clearing the array
						validInput = true; //Stop looping
						isEnd = true; //Stop outer looping
					}
					for (int j = 0; j < copy.size(); j++){ //Compare to every valid response
						if (s.equals(copy.get(j))){ //Good input
							validInput = true; //Stop looping
							rank.add(s); //Add to the array of matches
							copy.remove(j); //Remove the response as an option to avoid duplicates
						}							
					}
					if (!validInput){
						Out.getDisp().renderLine("Input is not one of the question's existing choices. Please input again.");
					}
				} //while (!validInput)
			} //while (!isEnd)				
			dictAns.put(getLeft().get(i), rank); //Add to the Dict
		} //for (int i=1; i <= val; i++)
		
		return new RespDict(dictAns);
	}