Untitled

                Never    
class Graph:
    def __init__(self, V = None, E = None):
        if V == None:
            self.V = {}
        else:
            self.V = {}
            for i in V:
                self.V.update([(i, None)])
        if E == None:
            self.E = {}
        else:
            self.E = {}
            for i in E:
                self.E.update([(i, None)])

    def __str__(self):
        string = ""
        string += "vertices:" + "\n"
        string += " ".join(list(map(str, sorted(Graph.vertices(self))))) + "\n"
        string += "edges:"
        for edge in Graph.edges(self):
            string += "\n" + str(edge[0]) + " -> " + str(edge[1])
        return string

    def __setitem__(self, x, d):
        if isinstance(x, tuple):
            self.E[x] = d
        else:
            self.V[x] = d

    def __getitem__(self, x):
        if isinstance(x, tuple):
            return self.E[x]
        else:
            return self.V[x]

    def add_vertex(self, x):
        self.V.update([(x, None)])

    def add_edge(self, e):
        self.E.update([(e, None)])

    def edges(self):
        i = 0
        l = list(self.E.keys())
        while len(l) != i:
            yield l[i]
            i += 1

        if len(self.E) != i:
            return StopIteration

    def vertices(self):
        i = 0
        l = list(self.V.keys())
        while len(l) != i:
            yield l[i]
            i += 1

        if len(self.V) != i:
            return StopIteration

    def outgoing(self, v):
        output = []
        for i in Graph.edges(self):
            if v == i[0]:
                output.append(i)
        return sorted(output)

G = Graph()
string = 10
try:
    while True:
        n = input()
        if n == "":
            break
        else:
            G.add_vertex(n[:len(n) - 1])
            G.add_vertex(n[1:])
            G.add_edge((n[:len(n) - 1], n[1:]))
except EOFError:
    pass
print(G)

Raw Text