class TalkingClock {
		private static final String[] zeroToTwelve = { "zero", "one", "two", "three", "four", "five", "six", "seven",
				"eight", "nine", "ten", "eleven", "twelve" };
		private static final String[] teens = { "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen",
				"nineteen" };
		private static final String[] twentyToFifty = { "twenty", "thirty", "fourty", "fifty" };
		private static final String PREFIX = "It's";
	
		public static String hourToWords(String hourString) {
			int hour = Integer.parseInt(hourString);
			String suffix = "am";
			if (hour > 11) {
				suffix = "pm";
			}
			if (hour > 12) {
				hour = hour - 12;
			}
			if (hour == 0) {
				hour = 12;
			}
			String hourInWords = zeroToTwelve[hour] + " " + suffix;
			return hourInWords;
		}
	
		public static String minutesToWords(String minString) {
			int minutes = Integer.parseInt(minString);
			String minutesString = "";
			if (minutes == 0) {
				// default value of minutesString
			} else if (minutes < 10) {
				minutesString = "oh " + zeroToTwelve[minutes];
			} else if (minutes < 13) {
				minutesString = zeroToTwelve[minutes];
			} else if (minutes < 20) {
				minutesString = teens[minutes - 13];
			} else if ((minutes % 10) == 0) {
				minutesString = twentyToFifty[Math.floorDiv(minutes, 20)];
			} else {
				minutesString = twentyToFifty[Math.floorDiv(minutes, 10) - 2] + " " + zeroToTwelve[(minutes % 10)];
			}
			return minutesString;
		}
	
		private static String[] parseStringTimeToArray(String time) {
			if (time == null) {
				throw new IllegalArgumentException("The input time must not be null");
			}
			String[] timeArr = time.split(":");
			if (timeArr.length != 2) {
				throw new IllegalArgumentException("The input time must be in format \"HH:MM\"");
			}
			return timeArr;
		}
	
		public static String timeToWords(String time) {
			String[] parsedTime = parseStringTimeToArray(time);
			String[] hourWithSuffix = hourToWords(parsedTime[0]).split(" ");
			String hour = hourWithSuffix[0];
			String suffix = hourWithSuffix[1];
			String minutes = minutesToWords(parsedTime[1]);
			if ("".equals(minutes)) {
				return PREFIX + " " + hour + " " + suffix;
			} else {
				return PREFIX + " " + hour + " " + minutes + " " + suffix;
			}
	
		}
		
		public static void main(String[] args) {
			String[] times = { "00:00", "01:30", "12:05", "14:01", "20:29", "21:00" };
			for (String time : times) {
				System.out.println(timeToWords(time));
			}
			
		}
	}