Optimal Palindrome Algorithm