만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

N 이하의 식

시간 제한2초메모리 제한512 MB

요약
숫자와 '+'로 이루어진 문자열 S에서 문자를 최소한으로 바꿔, 값이 N 이하인 올바른 수식을 만드는 문제입니다. 만들 수 없으면 -1을 출력합니다.
난이도

보통10점 중 5점

유형
동적 계획법, 문자열
정답자
아직 제출이 없습니다

문제

정수 NN과 +와 숫자로 이루어진 문자열 SS가 주어진다. SS의 일부 문자를 바꿔서 계산 결과가 NN 이하인 올바른 식으로 만들어야 한다. 문자 하나를 다른 문자로 바꾸는 작업을 여러 번 할 수 있으며, 바꾼 뒤의 문자열도 +와 숫자로만 이루어져야 한다. 앞자리 0과 단항 양수는 허용되지 않는다.

예를 들어 0123+456은 앞자리에 0이 있으므로 잘못되었다. +1+2와 2++3은 단항 식을 포함하므로 잘못되었다. 반면 12345, 0+1+2, 1234+0+0은 모두 올바른 식이다.

계산 결과가 NN 이하인 올바른 식을 만들 때 바꿔야 하는 문자의 최소 개수를 구하라. 그런 식을 만들 방법이 없으면 −1-1을 출력한다.

입력

첫 줄에 정수 NN(1≤N≤1091 \le N \le 10^9)이 주어진다. 둘째 줄에 +와 숫자로 이루어진 문자열 SS가 주어진다. SS의 길이는 1 이상 1,000 이하이다. SS가 처음부터 올바른 식이라는 보장은 없다.

출력

바꾼 문자의 최소 개수를 출력한다. NN 이하인 올바른 식을 만들 수 없으면 −1-1을 출력한다.

힌트

첫 번째 예에서는 처음 두 문자를 바꿔 1+23 같은 식을 만들 수 있다. 두 번째 예에서는 모든 문자를 바꿔 0+10 또는 10+0을 만들어야 한다. 세 번째 예에서는 11 이하인 올바른 식을 만들 수 없다.

예제5

  1. 예제 1

    입력
    100
    +123
    
    예상 출력
    2
    
  2. 예제 2

    입력
    10
    +123
    
    예상 출력
    4
    
  3. 예제 3

    입력
    1
    +123
    
    예상 출력
    -1
    
  4. 예제 4

    입력
    10
    ++1+
    
    예상 출력
    2
    
  5. 예제 5

    입력
    2000
    1234++7890
    
    예상 출력
    2