program prob6
    implicit none
    integer(16)::N, i, j, ans, cnt, maxd, maxa, sumd
    integer(16), allocatable::A(:), B(:), c(:), d(:)
    read(*,*) N
    allocate(A(N))
    allocate(B(N))
    allocate(c(N))
    allocate(d(N))
    read(*,*) A
    read(*,*) B

    d = 0
    cnt = 0
    j = 1
    do i = 1, N
        if(B(i) - A(i) > 0) then
            d(i) = B(i) - A(i)
            cnt = cnt + 1
        else if(B(i) - A(i) < 0) then
            c(j) = B(i) - A(i)
            j = j+1
        end if
    end do

    if(sum(d) == 0)then
        write(*,*) 0
        stop
    end if
    if(sum(B) > sum(A))then
        write(*,*) -1
        stop
    end if
    sumd = sum(d)
    call heapsort(j-1,c)

    do i = 1, j-1
        sumd = sumd + c(i)
        cnt = cnt + 1
        if(sumd <= 0) then
            write(*,*) cnt
            stop
        end if
    end do


    write(*,*) cnt

    deallocate(A)
    deallocate(B)
    deallocate(c)
    deallocate(d)
    stop
    contains
    subroutine heapsort(n,array)
        implicit none
        integer(16),intent(in) :: n
        integer(16),intent(inout) :: array(1:n)
       
        integer ::i,k,j,l
        double precision :: t
       
        if(n.le.0)then
           write(6,*)"Error, at heapsort"; stop
        endif
        if(n.eq.1)return
      
        l=n/2+1
        k=n
        do while(k.ne.1)
           if(l.gt.1)then
              l=l-1
              t=array(L)
           else
              t=array(k)
              array(k)=array(1)
              k=k-1
              if(k.eq.1) then
                 array(1)=t
                 exit
              endif
           endif
           i=l
           j=l+l
           do while(j.le.k)
              if(j.lt.k)then
                 if(array(j).lt.array(j+1))j=j+1
              endif
              if (t.lt.array(j))then
                 array(i)=array(j)
                 i=j
                 j=j+j
              else
                 j=k+1
              endif
           enddo
           array(i)=t
        enddo
      
        return
    end subroutine heapsort
end program prob6