public String reconstructString() {
        StringBuilder reconstructedString = new StringBuilder();
        List<String> listWithAllOutgoingStrings = getListWithAllOutgoingStrings();
        List<String> listWithAllIncomingStrings = getListWithAllIncomingStrings();

        String start = findStart(listWithAllOutgoingStrings, listWithAllIncomingStrings);
        String finish = "";
        List<String> possibleFinish = findFinish(listWithAllOutgoingStrings, listWithAllIncomingStrings);

        for (String s : possibleFinish) {
            if (!start.equals(s)) {
                finish = s;
            }
        }

        reconstructedString.append(start);
        while (!start.equals(finish)) {
            start = nextString(start);
            int length = start.length();
            Character nextChar = start.charAt(length - 1);
            reconstructedString.append(nextChar);
        }

        return reconstructedString.toString();
    }