与えられた数列を(ai)i=0∞ (a0=0,a1=2,a2=22,...)とする。M=[10021],v=[01]とするとき、akはMkvの第一成分に等しい。従って、問題はv=Mkvであるような最小の正整数kを求めることと言い換えられる。
この問題はbaby-step giant-stepで解ける。B=⌈K⌉とする。a0,a1,a2,...,aB−1についてmodKでの値をmapのキー、添字をmapの値として保持しておく。(キーが重複する場合、そこでサイクルに入るので、それまでに0が見つかっていなければ打ち切ってよい。) k=iB−j, j∈{0,1,...,B−1}とする時、v=Mkvが成り立つためにはMjv=MiHvが成り立つ必要がある。したがって、i=1,2,...,BについてMiBvを計算してaiBを求め。この値が先に作ったマップに入っていれば対応する添字jを取り出すとk=iB−jが答えの候補になる。ただし、Mは正則とは限らないので、Mjv=MiBvは必要条件でしかない。つまり、aiB−jmodKが必ず0になるわけではない。実際にMiB−jvを計算して確認する必要がある。
ハッシュテーブルを使った場合の期待計算量はO(K)。