Consider the string `"adfa"` and the following rules: 
```Pearl
a) each character MUST be changed either to the one before or the one after in alphabet. 
b) "a" can only be changed to "b" and "z" to "y". 
```
From our string, we get:
```Pearl
"adfa" -> ["begb","beeb","bcgb","bceb"]
Another example: "bd" -> ["ae","ac","ce","cc"]
--We see that in each example, one of the possibilities is a palindrome.
```
I was working on the code for this but I couldn't quite figure it out. So far I have:

```python
def solve(st):
    return [all(ord(x) - ord(y) in ["FIX"] for x, y in zip(st, st[::-1]))][0]
```
I'm not sure what three numbers go into the array labelled `["FIX"]`. This is the only thing missing. 

You will be given a lowercase string and your task is to return `True` if at least one of the possiblities is a palindrome or `False` otherwise. You can use your own code or fix mine. 

More examples in test cases. Good luck!

Difficulty: introductory

Starter code:

def solve(st):
	

Solutions:
def solve(st):
    return all(True if ord(x) - ord(y) in [-2, 0, 2] else False for x, y in zip(st, st[::-1]))


def solve(st):
    return all(abs(ord(x) - ord(y)) in {0, 2} for x, y in zip(st, st[::-1]))

def solve(stg):
    return all(ord(x) - ord(y) in {-2, 0, 2} for x, y in zip(stg, stg[::-1]))

solve=lambda s:all(abs(ord(s[i])-ord(s[-i-1]))in[0,2]for i in range(len(s)//2))

def solve(stg):
    return all(abs(abs(ord(x) - ord(y)) - 1) == 1 for x, y in zip(stg, stg[::-1]))


def solve(st):
    return all(abs(ord(x) - ord(y)) in [0, 2] for x, y in zip(st, st[::-1]))

def solve(st):
    print(st)
    return all(ord(x) - ord(y) in [-2,0,2] for x, y in zip(st, st[::-1]))

def solve(st):
    return [all(ord(x) - ord(y) in [2,0,-2] for x, y in zip(st, st[::-1]))][0]

solve = lambda s: all(abs(ord(x) - ord(y)) in (0, 2) for x, y in zip(s, s[::-1]))

# dafuck was up with that [all()][0]? ._.
def solve(st):
    return all(abs(ord(x) - ord(y)) in (0, 2) for x,y in zip(st, st[::-1]))