<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def find_suitable_period():
 """ Automatically find a suitable period to use. Factors are best, because they will have 1 left over when dividing SIZE+1. This only needs to be run once, on import. """

    # The highest acceptable factor will be the square root of the size.
    highest_acceptable_factor = int(math.sqrt(SIZE))

    # Too high a factor (eg SIZE/2) and the interval is too small, too
    # low (eg 2) and the period is too small.
    # We would prefer it to be lower than the number of VALID_CHARS, but more
    # than say 4.
    starting_point = len(VALID_CHARS) > 14 and len(VALID_CHARS) / 2 or 13
    for p in range(starting_point, 7, -1) \
            + range(highest_acceptable_factor, starting_point + 1, -1) \
            + [6, 5, 4, 3, 2]:
        if SIZE % p == 0:
            return p
    raise Exception("No valid period could be found for SIZE=%d.\n"
                    "Try avoiding prime numbers" % SIZE)