  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
O(|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.
