Skip to main content
2 of 7
Got rid of `if` and `else`.
G. Sliepen
  • 1.3k
  • 9
  • 17

C (gcc), 180 168 bytes

f(char*s){int j=strlen(s),m=j--/2,p=-1,i=0;for(;p&&i<m;j--,i++){s[i]^s[j]&&(p<0&&(s[i+1]==s[j]&&(p=++i)||s[i]==s[j-1]&&(p=j--+1)||p++)||p++);}return*s&&p<0?m+1:p?p:-1;} 

Try it online!

G. Sliepen
  • 1.3k
  • 9
  • 17