private int calculateBadWorkingHoursTeacherIIIAndIV() {
        int penaltyPoints = 0;

        List<LinkedHashMap> teachersAllDay = getAllDaysTeacherTimeTable();

        for (LinkedHashMap<String, LinkedHashMap> daysTimeTable : teachersAllDay) {
            // Very dirty hack because of rush
            int weekDayNumber = teachersAllDay.indexOf(daysTimeTable);
            Days weekDay = decideWeekDay(weekDayNumber);
            Collection<String> teacherNames = daysTimeTable.keySet();

            for (String teacherName : teacherNames) {
                LinkedHashMap<String, String> teachersTimeTableForTheDay = daysTimeTable.get(teacherName);
                Collection<String> lectureNumbers = teachersTimeTableForTheDay.keySet();
//                System.out.println("teacherName: " + teacherName);

                for (String lectureNumber : lectureNumbers) {
                    String groupNameToSplit = teachersTimeTableForTheDay.get(lectureNumber);
                    String[] splittedGroupNames = groupNameToSplit.split(":");
                    String groupName = splittedGroupNames[1].trim();

                    if (!StringUtils.equals(groupName, EMPTY_GROUP)) {
                        if (studentsMockData.getTeachersFromIIIAndIV().containsKey(teacherName)) {
                            if (studentsMockData.getTeachers().get(teacherName).getFreeLectures() != null) {
                                if (StringUtils.equals(studentsMockData.getTeachers().get(teacherName).getFreeLectures().get(weekDay), lectureNumber)) {
                                    penaltyPoints += PenaltyPoints.BAD_WORKING_HOURS_FOR_TEACHER_III_IV.penaltyPoints();
                                }

                            }
                        }
                    }

                }
            }
        }

        return penaltyPoints;

    }