k, 1717 13 bytes
-4 bytes thanks to coltim.
{`c$-1+x@&2=-':x*(`c$1+x)^x} Explanation:
{ } /functiondef func(x) : # -':x should /createbe a list of differences/deltaschars 1+x 2= / above = /check[ord(c)+1 for equality with 2, result isc booleanin listx] & (`c$ ) /get indices ofabove all 1s= [chr(there should only be onei) for i in above] x@ ^x /get letter at said index in our string -1+ result = [e for e in above if /goe backnot onein letterx] `c$ * /cast to characterreturn result[0]