на счет "идеи": честно говоря я не совсем понял что ты хочешь сравнивать после нахождения первого расхождения.
1) идем до расхождения (середина - палиндром)
2) выкидываем слева - продолжаем до расхождения (середина - палиндром)
3) выкидываем справа - продолжаем до расхождения (середина - палиндром)
нет решения
def poly(s):
L = len(s) - 1
L2 = (L>>1) + 1
print(s,L,L2)
i=0
while s[i]==s[L-i]:
print('1:', i, s[i], s[L-i])
i+=1
if i==L2: return 0
print('2:', i, s[i], s[L-i])
k=i
while s[k+1]==s[L-k]:
print('3:', k, s[k+1], s[L-k])
k+=1
if k==L2: return i
print('4:', k, s[k], s[L - k])
k=i
while s[k]==s[L-k-1]:
print('5:', k, s[k], s[L-k-1])
k+=1
if k==L2: return L-i
print('6:', k, s[k], s[L - k])
return None
while True:
s = input()
print(s)
print(poly(s))
qwertyytrewq
qwertyytrewq
qwertyytrewq 11 6
1: 0 q q
1: 1 w w
1: 2 e e
1: 3 r r
1: 4 t t
1: 5 y y
0
qwertyytrwq
qwertyytrwq
qwertyytrwq 10 6
1: 0 q q
1: 1 w w
2: 2 e r
3: 2 r r
3: 3 t t
3: 4 y y
3: 5 y y
2
qwrtyytrewq
qwrtyytrewq
qwrtyytrewq 10 6
1: 0 q q
1: 1 w w
2: 2 r e
4: 2 r e
5: 2 r r
5: 3 t t
5: 4 y y
5: 5 y y
8
qwertyytrewqww
qwertyytrewqww
qwertyytrewqww 13 7
2: 0 q w
3: 0 w w
4: 1 w w
6: 0 q w
None