BUG: first("1M") returning two months when first day is last day of month
- [x] closes #29623
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

thanks @phofl  @meeseeksdev backport 1.2.x @phofl this didn't fix the "2M" case from the issue?

```
>>> import pandas as pd
>>>
>>> pd.__version__
'1.3.0.dev0+42.g36c4d5ccf1'
>>>
>>> x = pd.Series(1, index=pd.bdate_range("2010-03-31", periods=100))
>>>
>>> print(x.first("1M"))
2010-03-31    1
Freq: B, dtype: int64
>>> print(x.first("2M"))
2010-03-31    1
Freq: B, dtype: int64
>>>
``` Unfortunately you are right. Opened #38446 to adress this.
Forgot to add the test concerning this case unfortunately