# 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: EASY
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) - 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))