#R, 118 114 bytes
function(a)while(grepl("[^ ]",a)){F=F+1;cat(a,"\n");for(j in c("[^a-zA-Z]",letters[F],LETTERS[F]))a=gsub(j," ",a)}
R, 118 114 bytes
function(a)while(grepl("[^ ]",a)){F=F+1;cat(a,"\n");for(j in c("[^a-zA-Z]",letters[F],LETTERS[F]))a=gsub(j," ",a)}
Thanks to @Giuseppe for those 4 bytes off
Short explanation:
function(a)
while(grepl("[^ ]",a)){ #As long as the string is not just spaces.
F=F+1 #Increment letter counter (F is FALSE, hence 0 by default)
cat(a,"\n") #Print string
for(j in c("[^a-zA-Z]",letters[F],LETTERS[F])) #Get rid of non-letters, and the current letter in lower and upper case
a=gsub(j," ",a)
}