Turing Decryption MIT example I am learning mathematics for computer science on  OpenCourseWare. I have no clue in  understanding below small mathematical problem. 
Encryption: The message m can be any integer in the set $\{0,1,2,\dots,p−1\}$; in par­ticular, the message is no longer required to be a prime. The sender encrypts 
the message $m$ to produce $m^∗$
by computing:
$$m^∗ = \operatorname{remainder}(mk,p).$$
Multiplicative inverses are the key to decryption in Turing’s code. Specfically, 
we can recover the original message by multiplying the encoded message by the 
inverse of the key:
\begin{align*}
m*k^{-1}
&\cong \operatorname{remainder}(mk,p) k^{-1} &&
\text{(the def. (14.8) of $m^*$)} \\
&\cong (mk) k{^-1} \pmod p && \text{(by Cor. 14.5.2)} \\
&\cong m \pmod p.
\end{align*}
This shows that $m*k^{-1}$ is congruent to the original message $m$. Since $m$ was in 
the range $0,1,\dots,p-1$, we can recover it exactly by taking a remainder: 
$m = \operatorname{rem}(m*k^{-1},p)$    --- ???
Can someone please explain the above line (with question marks) I don't understand it.

The line with the question mark is just a restatement of the explanation above in symbolic form.
We have a message $m$ and encrypted message $m^* = \text{remainder}(mk,p)$. If we are given $m^*$ we can recover $m$ by multiplying by $k^{-1}$ and taking the remainder mod $p$. That is, $\text{remainder}(m^* \cdot k^{-1},p) = \text{remainder}(mkk^{-1},p) = \text{remainder}(m,p) = m$. This gives $m$ exactly (and not something else congruent to $m \mod p$) because $m$ is restricted to be in $0,1,\dots,p-1$.
