For any fixed surface Sigma of genus g, we give an algorithm to decide whether a graph G of girth at least five embedded in Sigma is colorable from an assignment of lists of size three in time O(|V(G)|)$ Furthermore, we can allow a subgraph (of any size) with at most s components to be precolored, at the expense of increasing the time complexity of the algorithm to $Ol(|V(G)|^{K(g+s)+1}) for some absolute constant K; in both cases, the multiplicative constant hidden in the O-notation depends on g and s. This also enables us to find such a coloring when it exists.
The idea of the algorithm can be applied to other similar problems, e.g., 5-list-coloring of graphs on surfaces.