[FONT="]You are given two strings. Write an algorithm that creates a third string such that it contains both the given strings and it should be the smallest possible string. There is no condition regarding order of occurrence of given strings in the third string. Implement your algorithm in C++ using classes.[/FONT] [FONT="]For Example: [/FONT] [FONT="]a)[FONT="] [/FONT][/FONT][FONT="]S1=”hello” [/FONT] [FONT="]S2 = “loot”[/FONT] [FONT="]S3= “helloot” [/FONT] [FONT="]S3 = “helloloot” //Incorrect as S3 is not the smallest possible string[/FONT] [FONT="]b)[FONT="] [/FONT][/FONT][FONT="]S1= “hello”[/FONT] [FONT="]S2 = “Delhi”[/FONT] [FONT="]S3 = “helloDelhi” or “Delhihello”[/FONT] [FONT="]Expectations:[/FONT] [FONT="]a.[FONT="] [/FONT][/FONT][FONT="]Write the algorithm to concatenate two given strings. [/FONT] [FONT="]b.[FONT="] [/FONT][/FONT][FONT="]Modify your algorithm so that it creates the third possible string.[/FONT] [FONT="]c.[FONT="] [/FONT][/FONT][FONT="]Implement your algorithm in C++.[/FONT] [FONT="]d.[FONT="] [/FONT][/FONT][FONT="]Make a comparison of above two algorithms on the basis of time and space complexity.[/FONT] [FONT="]e.[FONT="] [/FONT][/FONT][FONT="]Can this problem be solved using iteration and recursion? Which one you will prefer and why? [/FONT] [FONT="] [/FONT]