Adding and subtracting months from dates is non-trivial, because months do not all have the same number of days, so you cannot rely on it to give you the answer you expect.
If you add 1 month to 30 January, you get 2 March, because there are only 28 days in February. Adding 3 months to 30 November has the same effect.
echo (new DateTime('2022-11-30'))->modify('+3 month')->format('Y-m-d');
# 2022-03-02
Whereas if you subtract 1 month from 2 March, you get 2 February! Which is logical (how could you possibly get 30 January?) if confusing. This is why subtracting 3 months gives you 2 December.
echo (new DateTime('2021-11-30'))->modify('+3 month')->modify('-3 month')->format('Y-m-d');
# 2021-12-02
This may seem surprising, but the alternative is equally confusing. If one month after 30 January was 28 February, subtracting one month from that still wouldn't give you the date you started with.
It therefore follows that the difference between 11 November and 1 February cannot be more than 3 months, because 3 months would give you 2 February. And also that the reverse diff is more than 3 months, because 3 months would give you 1 December! All completely maddening, but depending on what you actually mean by "how many months are there between these dates", you can probably work around it, by calculating the difference between the first of each month, or by doing something based on the answers to this question.