public static List <StringMeeting> CalendarMatchingSolution(
            List <StringMeeting> calendar1,
            StringMeeting dailyBounds1,
            List <StringMeeting> calendar2,
            StringMeeting dailyBounds2,
            int meetingDuration
            )
        {
            List <Meeting> updatedCalendar1  = updateCalendar(calendar1, dailyBounds1);
            List <Meeting> updatedCalendar2  = updateCalendar(calendar2, dailyBounds2);
            List <Meeting> mergedCalendar    = mergeCalendars(updatedCalendar1, updatedCalendar2);
            List <Meeting> flattenedCalendar = flattenCalendar(mergedCalendar);

            return(getMatchingAvailabilities(flattenedCalendar, meetingDuration));
        }
        public static List <Meeting> updateCalendar(List <StringMeeting> calendar, StringMeeting dailyBounds)
        {
            List <StringMeeting> updatedCalendar = new List <StringMeeting>();

            updatedCalendar.Add(new StringMeeting("0:00", dailyBounds.start));
            updatedCalendar.AddRange(calendar);
            updatedCalendar.Add(new StringMeeting(dailyBounds.end, "23:59"));
            List <Meeting> calendarInMinutes = new List <Meeting>();

            for (int i = 0; i < updatedCalendar.Count; i++)
            {
                calendarInMinutes.Add(new Meeting(timeToMinutes(updatedCalendar[i].start), timeToMinutes(updatedCalendar[i].end)));
            }
            return(calendarInMinutes);
        }