Helloellolloloo Worldorldrldldd
brainfuck, 60 56 bytes

,[&gt;++++++++[-&lt;----&lt;++++&gt;&gt;]&lt;[&gt;&gt;]&lt;[[&lt;]&gt;.[[-]&gt;[.&gt;]&lt;[&lt;]&gt;]],]


Try it online!

Requires a trailing space and prints a leading space. Both of these could be circumvented, but that ends up at 112 bytes.

Explanation

,[  Loop over each byte of input
  Tape: 32 w o r-32 d'
  &gt;++++++++[-&lt;----&lt;++++&gt;&gt;]   Subtract 32 from the character and add 32 to the previous char
  Tape: 32 w o r d-32 0'
  &lt;[&gt;&gt;]&lt;   If the last character was a space
  Tape: 32 w o r d-32 0'
  or
  Tape: 32 w o r d' space-32
  [
    [&lt;]&gt;.   Move to the end of the word and print out the space
    [   Loop over each letter
      [-]    Remove the first letter (initially space)
      &gt;[.&gt;]  Print the rest of the word
      &lt;[&lt;]&gt;  Move back to the first letter
    ]
    Tape: clear
  ]
,]  Get the next byte of input