The p-value can’t be zero; it’s only zero because you’ve limited the number of iterations to 10,000!
Or put another way, anything that’s less frequent than 1 in 10,000 is a lie; does that make sense to you?
Ultimately this is an artefact of how you modelled it.
If your a fan of simple explanations consider this, it’s entirely possible that 4 letters from a bag that fall out spell an English word but just unlikely. A single sample isn’t enough to condemn anyone unless you pick a threshold. In some sciences they choose 0.05 but in this case it doesn’t make sense to apply it.
If your friend pulled 3 sets of 4 letters out and all spelt an English word the probability is sufficiently low for you to suspect something isn’t right. The threshold is case specific.