def _extract_group(encr_text, fst_group_pos, snd_group_pos, min_group_len):
    """
    Extract the largest group of characters may match at each position

    ARGUMENT NOTES:
    min_group_len -- The min length of the group

    RETURN NOTES:
    If the group has no minimum size, None. Otherwise, the following tuple:
    (fst_group_pos, snd_group_pos, group_str)

    USAGE:
    >>> _extract_group('CSASTPKVSIQUTGQUCSASTPIUAQJB', 0, 16, 3)
    (0, 16, 'CSASTP')
    """
    
    old_fst_group_pos, old_snd_group_pos = fst_group_pos, snd_group_pos
    group = ""
    while encr_text[fst_group_pos] == encr_text[snd_group_pos]:
        group += encr_text[fst_group_pos]
        fst_group_pos += 1
        snd_group_pos += 1
        if fst_group_pos >= len(encr_text) or snd_group_pos >= len(encr_text):
            break
    if not group or len(group) < min_group_len:
        return None
    else:
        return (old_fst_group_pos, old_snd_group_pos, group)