# Task
 Given a string `str`, find the shortest possible string which can be achieved by adding characters to the end of initial string to make it a palindrome.

# Example

 For `str = "abcdc"`, the output should be `"abcdcba"`.

# Input/Output


 - `[input]` string `str`

    A string consisting of lowercase latin letters.

    Constraints: `3 ≤ str.length ≤ 10`.


 - `[output]` a string

Difficulty: introductory

Starter code:

def build_palindrome(s):
	

Solutions:
def build_palindrome(strng):
    n = 0
    while strng[n:] != strng[n:][::-1]: n += 1
    return strng + strng[:n][::-1]

def build_palindrome(str):
    suf = ""
    for c in str:
        pal = str + suf
        if pal == pal[::-1]:
            return pal
        suf = c + suf

def build_palindrome(s):
    return next(f"{s}{s[:i][::-1]}" for i in range(len(s)) if s[i:] == s[i:][::-1])


def build_palindrome(s):
  xs = (s + s[:i][::-1] for i in range(len(s)))
  return next(x for x in xs if x == x[::-1])

def build_palindrome(s):
  for i in range(len(s)):
      x = s + s[:i][::-1]
      if x == x[::-1]:
          return x

def build_palindrome(s):
    for i in range(-len(s) - 1, 0):
        if s.endswith(s[:i:-1]):
            return s + s[i::-1]

build_palindrome=lambda s:next(s+s[:i][::-1]for i in range(len(s)+1)if s[i:]==s[i:][::-1])

def build_palindrome(s):
    if s == s[::-1]:
        return s
    else:
        for i in range(1,len(s)):
            if s + s[:i][::-1] == (s + s[:i][::-1])[::-1]:
                return s + s[:i][::-1]
        


def build_palindrome(s):
    i = 1
    p = s
    while p != p[::-1]:
        p = s + s[0:i][::-1]
        i += 1
    return p


def build_palindrome(s):
    p = []
    for i in range(len(s)):
        string = s + s[:i][::-1]
        if string == string[::-1]:
            p.append(string)
    return min(p, key=lambda i: len(i))