You will be given a string and you task is to check if it is possible to convert that string into a palindrome by removing a single character. If the string is already a palindrome, return `"OK"`. If it is not, and we can convert it to a palindrome by removing one character, then return `"remove one"`, otherwise return `"not possible"`. The order of the characters should not be changed.

For example:
```Haskell
solve("abba") = "OK". -- This is a palindrome
solve("abbaa") = "remove one". -- remove the 'a' at the extreme right. 
solve("abbaab") = "not possible". 
```

More examples in the test cases. 

Good luck!

If you like this Kata, please try [Single Character Palindromes II](https://www.codewars.com/kata/5a66ea69e6be38219f000110)

Difficulty: introductory

Starter code:

def solve(s):
	

Solutions:
def solve(s):
    isOK = lambda x: x == x[::-1]
    
    return ("OK" if isOK(s)  else
            "remove one" if any( isOK(s[:i]+s[i+1:]) for i in range(len(s)) ) else
            "not possible")

def solve(s):
    if s == s[::-1]:
        return 'OK'
    for i in range(len(s)):
        if s[:i] + s[i+1:] == (s[:i] + s[i+1:])[::-1]:
            return 'remove one'
    return 'not possible'

def solve(s):
    if s == s[::-1]: return "OK"
    for i in range(len(s)):
        t = s[:i] + s[i+1:]
        if t == t[::-1]: return "remove one"
    return "not possible"

def solve(s):
    return 'OK' if s == s[::-1] else 'remove one' if any(s[:i]+s[i+1:] == (s[:i]+s[i+1:])[::-1] for i in range(len(s))) else 'not possible'

def solve(s):
    r = s[::-1]
    i = next((i for i, (c1, c2) in enumerate(zip(s, r)) if c1 != c2), None)
    if i is None:
        return 'OK'
    j = len(s) - i
    if s[i+1:] == r[i:j-1] + r[j:] or s[i:j-1] + s[j:] == r[i+1:]:
        return 'remove one'
    else:
        return 'not possible'

p,solve=lambda s:s==s[::-1],lambda s:p(s)and"OK"or any(p(s[:i]+s[i+1:])for i in range(len(s)))and"remove one"or"not possible"

def get_pal(s):
    if len(s) == 1: return 0
    if len(s) == 2 and s[0] == s[1]: return 0
    elif len(s) == 2 and s[0] != s[1]: return 1
    return 1 + min(get_pal(s[1:]), get_pal(s[:-1])) if s[0] != s[-1] else get_pal(s[1:-1])
        
def solve(s):
    ans = get_pal(s)
    return "OK" if ans == 0 else "remove one" if ans == 1 else "not possible"

def solve(stg):
    if is_pal(stg):
        return "OK"
    if any(is_pal(f"{stg[:i]}{stg[i+1:]}") for i in range(len(stg) + 1)):
        return "remove one"
    return "not possible"


def is_pal(stg):
    return stg == stg[::-1]

def solve(s):
    if s == s[::-1]:
        return "OK"
    for i in range(len(s)):
        news = s[:i] + s[i+1:]
        if news == news[::-1]:
            return "remove one"
    return "not possible"

def solve(s):
    if s == s[::-1]: 
        return "OK"
    
    s = [letter for letter in s]
    k = [letter for letter in s]

    for char in range(len(s)):
        s.pop(char); s = "".join(s)
        
        if s == s[::-1]: 
            return "remove one"
        
        s = [letter for letter in k]
        
    return "not possible"