def toy_bucket(name,n_features=4):
    if type(n_features) is not int or n_features<=0:
        raise ValueError('positive integer feature count required')
    if not isinstance(name,str):raise ValueError('string feature required')
    return sum(ord(c) for c in name)%n_features
def vector(names,n_features=4):
    if type(n_features) is not int or n_features<=0:
        raise ValueError('positive integer feature count required')
    result=[0]*n_features
    for name in names:result[toy_bucket(name,n_features)]+=1
    return result
print('two different names',vector(['اب','با']))
print('same name twice',vector(['اب','اب']))
print('new name fixed width',vector(['تازه']))
assert toy_bucket('اب')==toy_bucket('با')==3
assert vector(['اب','با'])==vector(['اب','اب'])==[0,0,0,2]
assert len(vector(['تازه']))==4
