pub fn baby_step_giant_step<M>(x: M::T, y: M::T, n: usize) -> Option<usize>where M: Monoid, M::T: Eq + Hash,
$\min{0\le i < n | x^i=y}$