  In this paper, we consider enumeration problems for edge-distinct and
vertex-distinct Eulerian trails. Here, two Eulerian trails are
\emph{edge-distinct} if the edge sequences are not identical, and they are
\emph{vertex-distinct} if the vertex sequences are not identical. As the main
result, we propose optimal enumeration algorithms for both problems, that is,
these algorithm runs in $\mathcal{O}(N)$ total time, where $N$ is the number of
solutions. Our algorithms are based on the reverse search technique introduced
by [Avis and Fukuda, DAM 1996], and the push out amortization technique
introduced by [Uno, WADS 2015].
