I'm a fan of early returns.
So
if(isalpha(letter) == false) return letter
if(letter whatever) {
Do thing
Return letter
}
if(letter something else) {
Do something else
Return letter
}
throw error("unprocessable letter")
I find it lets me mentally walk through all the paths more easily.
And if something gets too complex for this, then I need to break it down into further functions