def first_recurring(string):
    output = None
    seen = set()
    for char in string:
        if char not in seen:
            seen.add(char)
        else:
            output = char
            break
    return output

string = "acbbac"
assert first_recurring(string) == "b"

string = "abcdef"
assert first_recurring(string) == None
f3ef86ba65f116d4b1bd46dfdee2753efdc044c1
<mask token>

def first_recurring(string):
    output = None
    seen = set()
    for char in string:
        if char not in seen:
            seen.add(char)
        else:
            output = char
            break
    return output


<mask token>

def first_recurring(string):
    output = None
    seen = set()
    for char in string:
        if char not in seen:
            seen.add(char)
        else:
            output = char
            break
    return output


<mask token>
assert first_recurring(string) == 'b'
<mask token>
assert first_recurring(string) == None

def first_recurring(string):
    output = None
    seen = set()
    for char in string:
        if char not in seen:
            seen.add(char)
        else:
            output = char
            break
    return output


string = 'acbbac'
assert first_recurring(string) == 'b'
string = 'abcdef'
assert first_recurring(string) == None

def first_recurring(string):
    output = None
    seen = set()
    for char in string:
        if char not in seen:
            seen.add(char)
        else:
            output = char
            break
    return output

string = "acbbac"
assert first_recurring(string) == "b"

string = "abcdef"
assert first_recurring(string) == None