New methods for finding minimum genus embeddings of graphs on orientable and non-orientable surfaces