[step:Encode each permutation by its ordered list of values]
Let
\begin{align*}
E_n := \{1,\dots,n\}.
\end{align*}
Define the set of ordered distinct-value lists by
\begin{align*}
T_n := \{(a_1,\dots,a_n) \in E_n^n : a_i \neq a_j \text{ whenever } i \neq j\}.
\end{align*}
Define the map
\begin{align*}
\Phi:S_n \to T_n,\qquad \Phi(\sigma)=(\sigma(1),\dots,\sigma(n)).
\end{align*}
This map is well-defined because every $\sigma \in S_n$ is injective, so the values $\sigma(1),\dots,\sigma(n)$ are pairwise distinct elements of $E_n$.
The map $\Phi$ is injective: if $\Phi(\sigma)=\Phi(\tau)$ for $\sigma,\tau \in S_n$, then $\sigma(i)=\tau(i)$ for every $i \in E_n$, so $\sigma=\tau$ as functions $E_n \to E_n$.
The map $\Phi$ is surjective: given $(a_1,\dots,a_n) \in T_n$, define
\begin{align*}
\sigma_{(a_1,\dots,a_n)}:E_n \to E_n,\qquad \sigma_{(a_1,\dots,a_n)}(i)=a_i.
\end{align*}
Since the entries $a_1,\dots,a_n$ are pairwise distinct and there are exactly $n$ of them in the $n$-element set $E_n$, the map $\sigma_{(a_1,\dots,a_n)}$ is bijective. Hence $\sigma_{(a_1,\dots,a_n)} \in S_n$ and $\Phi(\sigma_{(a_1,\dots,a_n)})=(a_1,\dots,a_n)$.
Therefore $\Phi$ is a bijection, and finite sets in bijection have the same cardinality:
\begin{align*}
|S_n|=|T_n|.
\end{align*}
[/step]