Given an orientable surface with boundary and a free homotopy class, we present a purely combinatorial algorithm which produces a representative of that homotopy class with minimal self intersection.