private String match(String targetNumber){
		if (targetNumber.isEmpty())
			return "";
		if (hmPartialResults.containsKey(targetNumber))
			return hmPartialResults.get(targetNumber);
		int minWordCount = Integer.MAX_VALUE;
		String localResult = null;
		for (int i = targetNumber.length(); i>0; i--){
			String localsub = targetNumber.substring(0,i);
			if (hm.containsKey(localsub)){
				String subResult = match(targetNumber.substring(i, targetNumber.length())); 
				if ( subResult != null){
					String temp = hm.get(localsub) + " " + subResult;
					int tempcount =temp.split(" ").length; 
					if ( tempcount < minWordCount){
						localResult = temp;
						minWordCount = tempcount;
					}
				}
			}
		}
		hmPartialResults.put(targetNumber, localResult);
					
		return localResult;
	}