For anyone interested, here is the final version. It's my first Wolfram Language function, so I'm sure it can be improved.
bee[] := Module[ {letters, z, k},
letters = InputString[];
z = Alternatives @@ Characters[letters];
k = StringTake[letters, 1];
Select[WordList[], StringMatchQ[#, z ..] && StringContainsQ[#, k] &&
StringLength[#] > 3 &]
]
Here is what the output looks like if the input string is fetbind:
In:= bee[]
Out = {"beef", "befit", "benefit", "biff", "defend",
"define", "defined", \ "definite", "deft", "diffident", "edified",
"effendi", "effete", \ "feed", "feint", "fend", "fete", "fetid",
"fief", "fiend", "fife", \ "fifteen", "find", "fine", "finite",
"fitted", "identified", \ "indefinite", "infinite", "tiff"}