This is a fairly common problem in some applied crypto settings, like anonymous credentials and cryptocurrency. What you need is a zero-knowledge proof of knowledge (ZKPoK) that the sender knows three distinct encryption keys and a hidden random permutation of three elements so that the ciphertexts given to the receiver are actually encryptions of the three plaintexts.
More formally, let the three ciphertexts be $c_1, c_2, c_3$. The ciphertext $c_i,i\in [1, 2, 3]$ is the encryption with a key $k_i$ of plaintext $p_{\sigma(i)}$. The plaintext $p_{\sigma(i)}$ is the $\sigma(i)^{\text{th}}$ element of the original list of plaintexts ["how", "are", "you"]
where $\sigma$ is a uniformly random sample from the set of permutations of three elements.
In the language of proof systems, the string $(c_1,c_2,c_3,\text{"how"},\text{"are"},\text{"you"})$ is a member of the "language" the ZKPoK is proving membership in. The keys and hidden permutation are a "witness" that proves the string of ciphertexts and plaintexts is a member of this language. A ZKPoK of the statement below is what the sender needs to send the receiver to convince it that the ciphertexts are well-formed encryptions of the appropriate plaintexts, but not reveal any other information about the keys or the hidden permutation.
The statement is, roughly: "I know keys $k_1, k_2, k_3$ and a permutation $\sigma$ so that $c_i = E_{k_i}(p_\sigma(i))$ for $i\in [1, 2, 3]$".
Rather than using a standard encryption scheme, it's probably best to use a commitment, which is kind of like an encryption scheme that prevents the
sender from proving multiple different statements about the ciphertexts.