public static String say(int x) {
		if (x > 99 || x < 0) {
			return "value out of bounds";
		}

		final Map<Integer, String> ones = new HashMap<Integer, String>();
		final Map<Integer, String> tens = new HashMap<Integer, String>();
		final Map<Integer, String> specials = new HashMap<Integer, String>();

		ones.put(0, "zero");
		ones.put(1, "one");
		ones.put(2, "two");
		ones.put(3, "three");
		ones.put(4, "four");
		ones.put(5, "five");
		ones.put(6, "six");
		ones.put(7, "seven");
		ones.put(8, "eight");
		ones.put(9, "nine");

		tens.put(2, "twenty");
		tens.put(3, "thirty");
		tens.put(4, "forty");
		tens.put(5, "fifty");
		tens.put(6, "sixty");
		tens.put(7, "seventy");
		tens.put(8, "eighty");
		tens.put(9, "ninety");

		specials.put(10, "ten");
		specials.put(11, "eleven");
		specials.put(12, "twelve");
		specials.put(13, "thirteen");
		specials.put(14, "fourteen");
		specials.put(15, "fifteen");
		specials.put(16, "sixteen");
		specials.put(17, "seventeen");
		specials.put(18, "eighteen");
		specials.put(19, "nineteen");

		if (x < 10) {
			return ones.get(x);
		}
		if (x < 20) {
			return specials.get(x);
		}
		if (x % 10 == 0) {
			return tens.get(x / 10);
		}
		return tens.get(x / 10) + "-" + ones.get(x % 10);
	}