diff --git a/discord/ext/commands/context.py b/discord/ext/commands/context.py
index <HASH>..<HASH> 100644
--- a/discord/ext/commands/context.py
+++ b/discord/ext/commands/context.py
@@ -152,6 +152,7 @@ class Context(discord.abc.Messageable):
         restart: bool
             Whether to start the call chain from the very beginning
             or where we left off (i.e. the command that caused the error).
+            The default is to start where we left off.
         """
         cmd = self.command
         view = self.view
@@ -166,8 +167,9 @@ class Context(discord.abc.Messageable):
 
         if restart:
             to_call = cmd.root_parent or cmd
-            view.index = len(self.prefix) + 1
+            view.index = len(self.prefix)
             view.previous = 0
+            view.get_word() # advance to get the root command
         else:
             to_call = cmd
[commands] Restart the StringView properly in Context.reinvoke.

The old code for some reason assumed that the length of the command
would be 1. This is because when I tested this I would use single
letter command names and it would "just work" when in reality it was
completely incorrect.

A reminder to thoroughly test instead of just fitting something to work