def METHOD_NAME(self, words):
    """
    This is a rather hackish method and is included for completeness.
    The word problem for an instance of DualAbelianGroup as it can
    for an AbelianGroup. The reason why is that word problem
    for an instance of AbelianGroup simply calls GAP (which
    has abelian groups implemented) and invokes "EpimorphismFromFreeGroup"
    and "PreImagesRepresentative". GAP does not have duals of
    abelian groups implemented. So, by using the same name
    for the generators, the method below converts the problem for
    the dual group to the corresponding problem on the group
    itself and uses GAP to solve that.
    EXAMPLES::
        sage: G = AbelianGroup(5,[3, 5, 5, 7, 8], names="abcde")
        sage: Gd = G.dual_group(names="abcde")
        sage: a,b,c,d,e = Gd.gens()
        sage: u = a^3*b*c*d^2*e^5
        sage: v = a^2*b*c^2*d^3*e^3
        sage: w = a^7*b^3*c^5*d^4*e^4
        sage: x = a^3*b^2*c^2*d^3*e^5
        sage: y = a^2*b^4*c^2*d^4*e^5
        sage: e.word_problem([u,v,w,x,y])
        [[b^2*c^2*d^3*e^5, 245]]
    """
    from sage.libs.gap.libgap import libgap
    A = libgap.AbelianGroup(self.parent().gens_orders())
    gens = A.GeneratorsOfGroup()
    gap_g = libgap.Product([gi**Li for gi, Li in zip(gens, self.list())])
    gensH = [libgap.Product([gi**Li for gi, Li in zip(gens, w.list())])
             for w in words]
    H = libgap.Group(gensH)
    hom = H.EpimorphismFromFreeGroup()
    ans = hom.PreImagesRepresentative(gap_g)
    resu = ans.ExtRepOfObj().sage()  # (indice, power, indice, power, etc)
    indices = resu[0::2]
    powers = resu[1::2]
    return [[words[indi - 1], powi] for indi, powi in zip(indices, powers)]