program main
    implicit none
    integer(4):: i, j, k
    integer(4):: h, w, cnt=0
    integer(4), parameter:: inf = 1000000
    integer(4), allocatable:: m(:,:), im(:,:), tmp(:,:), dp(:,:)
    character(100)::pcm
    character(1),allocatable:: cm(:,:)
    logical, allocatable:: check(:,:)
    logical:: flip

    read*, h, w
    allocate(cm(w,h), m(w,h), im(w,h), dp(w,h), check(w,h))

    do i=1, h
        read*, pcm
        do j=1, w
            if (pcm(j:j) == '.') then
                m(j,i) = 1
            else
                m(j,i) = 0
            end if
        end do
    end do

    dp(:,:) = inf

    flip = .false.
    call init(m(:,:),1,1, flip)

    dp(1,1) = 0
    if (flip) dp(1,1) = 1
    ! do i=1,h
    !     print*, m(:,i)
    ! end do

    do while(dp(w,h) >= inf)
        check(:,:) = .false.
        do i=1, h
            do j=1, w
                if (check(j,i) .or. dp(j,i) == inf) cycle

                if (m(j,i) == m(j,i+1) .and. i+1 <= h) then
                    dp(j, i+1) = dp(j, i)
                else if (i+1 <= h) then
                    dp(j,i+1) = min(dp(j,i)+1, dp(j,i+1))
                    check(j,i+1) = .true.
                end if

                if (m(j,i) == m(j+1, i) .and. j+1 <= w) then
                    dp(j+1, i) = dp(j, i)
                else if (j+1 <= w) then
                    dp(j+1,i) = min(dp(j,i)+1, dp(j+1,i))
                    check(j+1,i) = .true.
                end if
                ! print*, '-'
                ! print*, m(j,i) == m(j,i+1), i+1 <= h
                ! print*, m(j,i) == m(j+1, i), j+1 <= w
                ! do k=1, h
                !     print*, dp(:,k)
                ! end do
            end do
        end do
    !     print*, '-- --'

    ! do i=1, h
    !     print*, dp(:,i)
    ! end do

    ! do i=1, h
    !     print*, check(:,i)
    ! end do

        do i=1, h
            do j=1, w
                if (.not. check(j,i)) cycle

                if (i+1 <= h) dp(j,i+1) = min(dp(j,i), dp(j,i+1))
                if (j+1 <= w) dp(j+1,i) = min(dp(j,i), dp(j+1,i))
            end do
        end do

        ! print*, '---'
        ! do i=1,h
        !     print*, dp(:,i)
        ! end do

    end do
    print*, dp(w,h)

contains
recursive subroutine init(m, j, i, f)
    integer(4):: m(:,:),i,j
    logical:: f
    if (m(j,i) == 0) then
        f = .true.
        if (i+1 <= h) call init(m(:,:), j, i+1, f) 
        if (j+1 <= w) call init(m(:,:), j+1, i, f)
        m(j,i) = 1
    end if 
    
end subroutine init
    
end program main