# C, 52 bytes <!-- language: lang-c --> j;f(char*s){for(j=0;*s=s[j];s[j]==94?s--,j+=3:s++);} We define a function `f` that takes a pointer to the string as input. After the function call, that pointer will contain a modified string. A simple test: <!-- language: lang-c --> int main(int argc, char** argv) { char buf[300] = "Digital Trauma^H^H^H^H^H^H^H^H^H^H^H^H^H^HMaria Tidal Tug^H^H^H^H^H^H^H^H^H^H^H^H^H^H^HDigital Trauma"; f(buf); printf(buf); return 0; } The above prints: Digital Trauma