<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def notChainStr (states, s):
 """XXX I'm not sure this is how it should be done, but I'm going to try it anyway. Note that for this case, I require only single character arcs, since I would have to basically invert all accepting states and non-accepting states of any sub-NFA's. """

    assert len(s) > 0
    arcs = list(map(lambda x : newArcPair(states, x), s))
    finish = len(states)
    states.append([])
    start, lastFinish = arcs[0]
    states[start].append((EMPTY, finish))
    for crntStart, crntFinish in arcs[1:]:
        states[lastFinish].append((EMPTY, crntStart))
        states[crntStart].append((EMPTY, finish))
    return start, finish