------
## 最终结论
```python
def min_flips_mono_incr(S: str) -> int:
    count_ones = 0
    flips = 0

    for char in S:
        if char == '1':
            count_ones += 1
        else:
            flips += 1

    min_flips = flips  # Initialize min_flips with the current number of flips
    count_ones = 0  # Reset count_ones for the second pass

    for char in S:
        if char == '1':
            count_ones += 1
        else:
            flips -= 1
        
        # Calculate the minimum flips needed if we were to split here
        min_flips = min(min_flips, flips + count_ones)

    return min_flips
```

This function calculates the minimum number of flips required to make a binary string monotone increasing by considering each possible split point and tracking the number of '1's and '0's encountered.