A straightforward way on top of the existing two-stack solution is to scan the data stack and pop the min item. However the complexity is O(n).
Another possible solution is to use list to store the data stack and keep a min pointer. So we can remove min from list in O(1) time. Any comment is appreciated.