__Algorithm Design __

A palindrome is a sequence of units that has the property of reading the same in either direction (e.g., GCCG). Palindromes also occur in nucleotide acid sequences (e.g., DNA and RNA). To learn more about palindromes in DNAs and RNAs, please refer to the following web sites:

1. http://en.wikipedia.org/wiki/Palindrome

2. http://en.wikipedia.org/wiki/Palindromic_sequence

3. http://users.rcn.com/jkimball.ma.ultranet/BiologyPages/P/Palindromes.html

Due to mutations there could be some insertion of deletion which makes some palindromes not palindromes any more. For example, * GCCACCG *is a palindrome. Due to deletion, this sequence might be changed to

*(“G” was deleted).*

**CCACCG**In this project, you are required to design an algorithm which takes an input string and return a palindrome by inserting the smallest number of letters. You are allowed to insert characters at any position of the string. For example, * AAT *can be turned into palindrome

*by one insertion*

**TAAT***, and*

**T***into*

**GCT***with two insertions*

**GCTCG***.*

**CG**Besides designing an algorithm you also need to provide the time complexity analysis (e.g. big-O notation).