The min function will return the smallest element in the list. However, you need to consider the type of elements in the list. In the case of numbers, the smallest number.
print('Exemplo 1')
menor = min([3, 4, 2, 1])
print(menor)
Out[]: Exemplo 1
Out[]: 1
In the case of a string, it returns the smallest considering the alphabetical order.
And understand that space comes before a. That way, the space needs to be removed before the ordering of the function returns the result you expect. I've changed your array a bit so you can understand the problem. In example 2, you expect the result to be "a", but the return is "arrozz".
print('Exemplo 2')
menor = min(["joão", " b ", " arrozz ", "a"])
print(menor.strip())
Out[]: Exemplo 2
Out[]: arrozz
To get the expected result, use the key parameter by passing a lambda function that will strip each element.
print('Exemplo 3')
menor = min(["joão", " b ", " arrozz ", "a"], key=lambda x: x.strip())
print(menor.strip())
Out[]: Exemplo 3
Out[]: a
If you need the string with the fewest number of characters ignoring spaces, use the lambda function below. It will return the length of each string (without the spaces) to be evaluated by the min function.
print('Exemplo 4')
menor = min(["joão", " b ", " arrozz ", "a"], key=lambda x: len(x.strip()))
print(menor.strip())
Out[]: Exemplo 4
Out[]: b