A Lyndon word is a word that is lexicographically strictly less than all of its rotations. (A Lyndon word must be primitive by definition.)

Algorithm

The Lyndon rotation of a primitive word can be found using Booth's algorithm in O(n) time where n is the length of a word.