* using the linear time greedyLength by default