  The main result of the paper is the first polynomial-time algorithm for
ranking bracelets. The time-complexity of the algorithm is O(k^2 n^4), where k
is the size of the alphabet and n is the length of the considered bracelets.
The key part of the algorithm is to compute the rank of any word with respect
to the set of bracelets by finding three other ranks: the rank over all
necklaces, the rank over palindromic necklaces, and the rank over enclosing
apalindromic necklaces. The last two concepts are introduced in this paper.
These ranks are key components to our algorithm in order to decompose the
problem into parts. Additionally, this ranking procedure is used to build a
polynomial-time unranking algorithm.
