diff --git a/cw/src/Challenges.hs b/cw/src/Challenges.hs
index 9c5003837def694f20ec25ece711d3d41aa079e0..19484800c84970f9d77e1866211a82b5ca47a62f 100644
--- a/cw/src/Challenges.hs
+++ b/cw/src/Challenges.hs
@@ -166,9 +166,11 @@ insertString rg s gen | elemAt rg (x,y) /= Rand &&
       ((x,y),newGen) = generatePos gen (length rg)
       vDirs = validDirs rg s (x,y)
 
-      addToGrid :: Orientation -> String -> (Int,Int) -> RandGrid
-      addToGrid dir (c:cs) (x',y') = addToGrid dir cs charAdded (nextPos dir (x',y'))
+      addToGrid :: Orientation -> String -> RandGrid -> (Int,Int) -> RandGrid
+      addToGrid dir (c:[]) rg (x',y') = insertAt2D (Letter c) (x',y') rg
+      addToGrid dir (c:cs) rg (x',y') = addToGrid dir cs charAdded (nextPos dir (x',y'))
           where
+            charAdded :: RandGrid
             charAdded = insertAt2D (Letter c) (x',y') rg
       --addToGrid dir = map (\(c,(m,n)) -> insertAt2D (Letter c) (m,n) rg) (zip s (take (length s) $ iterate (nextPos dir) (x,y)))