String getAnswer(Solver solver, int k) {
        String type = questions.get(k).get(1);
        String topic = questions.get(k).get(1).equals(QUESTION_TYPES.get(0))
                || questions.get(k).get(1).equals(QUESTION_TYPES.get(5))
                || questions.get(k).get(1).equals(QUESTION_TYPES.get(7))
                ? capitalize(questions.get(k).get(2))
                : questions.get(k).get(2);
        String result = null;
        ArrayList<ArrayList<String>> info =
                solver.knownAbout(topic.toLowerCase());
        ArrayList<String> attr1guesses = info.get(0);
        ArrayList<String> attr2guesses = info.get(1);
        String attr1 = questions.get(k).get(1).equals(QUESTION_TYPES.get(0))
                || questions.get(k).get(1).equals(QUESTION_TYPES.get(5))
                || questions.get(k).get(1).equals(QUESTION_TYPES.get(7))
                ? attr1guesses.get(0) : capitalize(attr1guesses.get(0));
        String attr2 = attr2guesses.get(0);
        boolean attr1known = attr1guesses.size() == 1 && !isAnonymous(attr1);
        boolean attr2known = attr2guesses.size() == 1 && !isAnonymous(attr2);
        if (QUESTION_TYPES.indexOf(type) < 3) {
            result = answerBroadQuestion(attr1known, attr2known, type,
                    topic, attr1, attr2);
        } else {
            result = answerSpecificQuestion(attr1known, attr2known, type,
                    topic, attr1, attr2);
        }
        return result;
    }