diff --git a/cli/command.py b/cli/command.py
index d99ed41..b710e0b 100755
--- a/cli/command.py
+++ b/cli/command.py
@@ -1352,6 +1352,28 @@
                 matching_commands = self.get_matching_commands(command_word,
                                                                self.is_no_command,
                                                                command_registry)
+                # There may be multiple results. We need to figure out it there's
+                # an unambiguous match. The heuristic we use is to iterate over
+                # the command words and try to find a single result which has an
+                # exact match on the word while all the others are prefix matches.
+                # If there are multiple results that are exact matches, then we
+                # discard the other results that were prefix matches and continue
+                # with the next command word. If at an iteration all of the
+                # results are prefix matches for the current word, then we check
+                # all of the full tokens that were prefix matched by the command
+                # word. If all of the results have the same full token, then we
+                # continue. If there are multiple full tokens, then that's
+                # indicative of an ambiguous command, so we break out of the loop
+                # and raise an ambiguous command exception.
+                exact_match_commands = []
+                for matching_command in matching_commands:
+                    command, prefix_match = matching_command
+                    if prefix_match == False:
+                        #exact match found
+                        exact_match_commands.append(matching_command)
+                if len(exact_match_commands) > 0:
+                    matching_commands = exact_match_commands
+                    
                 for matching_command in matching_commands:
                     command, prefix_match = matching_command
                     self.handle_one_command(command, prefix_match, words)
@@ -1795,7 +1817,7 @@
                     }
                     arg_scopes.insert(0, invocation_scope)
                     if sdnsh.description: # for deubugging, print command name
-                        print command['self'], completion_proc
+                        print "command and completion_proc", command['self'], completion_proc
                     try:
                         _result = _call_proc(completion_proc, completion_registry,
                                             arg_scopes, command)
