What's happening is that you're getting the X-coordinate of the letter you want to show by using the find() function. It returns the location of the first matching letter that it finds, so when there are two of the same letter, you're just setting the first instance of it again. If you add a print statement, you can see where each letter is being placed:
--- Debugging process started ---
location (1,17): T
location (2,17): h
location (3,17): i
location (4,17): s
location (5,17):
location (3,17): i <-- 3 again
location (4,17): s <-- 4 again
location (5,17):
location (9,17): a
location (5,17):
location (11,17): t
location (12,17): e
location (4,17): s <-- 4 again
location (11,17): t
location (15,17): _
Instead of using find, just use a variable that you add one to with each loop.
Edit: Also, the only difference between set_cell and set_cellv is that you use an X and Y parameter for the first and a Vector parameter for the second. They just make it more convenient if you do or do not already have a Vector.