JavaScript ES6, 119 bytes ============== F=s=>(C=o=>--a.length?C(a.reduce((p,c,i)=>c+p.slice((a[i-1]=p.slice(0,c.length)).length)))+` `+o:o)(a=(s+` `).split` `)