  In this paper a classification of Reidemeister moves, which is the most
refined, is introduced. In particular, this classification distinguishes some
$\Omega_3$-moves that only differ in how the three strands that are involved in
the move are ordered on the knot.
  To transform knot diagrams of isotopic knots into each other one must in
general use $\Omega_3$-moves of at least two different classes. To show this,
knot diagram invariants that jump only under $\Omega_3$-moves are introduced.
  Knot diagrams of isotopic knots can be connected by a sequence of
Reidemeister moves of only six, out of the total of 24, classes. This result
can be applied in knot theory to simplify proofs of invariance of
diagrammatical knot invariants. In particular, a criterion for a function on
Gauss diagrams to define a knot invariant is presented.
