////基本の者ども
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int INF =2000000000;
//////forども//////////////////////////////////////////
#define REP(i,n) for(int i = 0; i < int(n); i++)
#define REPR(i,n) for(int i = int(n); i >= 0; i--)
#define FOR(i,m,n) for(int i = int(m); i < int(n); i++)
#define FOREACH(x,a) for(auto& (x) : (a) )
////////////////////////////////////////////////////////////////
//cinおよびcout拡張
#define COUT(x) cout<<(x)<<endl
void CINT(){}
template <class Head,class... Tail>
void CINT(Head&& head,Tail&&... tail){
    cin>>head;
    CINT(move(tail)...);
}
#define CIN(...) int __VA_ARGS__;CINT(__VA_ARGS__)
#define LCIN(...) ll __VA_ARGS__;CINT(__VA_ARGS__)
#define SCIN(...) string __VA_ARGS__;CINT(__VA_ARGS__)
/////////////////////////////////////////////////////////////////
//////あまった
#define MP make_pair
#define ALL(v) v.begin(), v.end()
#define pb(a) push_back(a)
///////////////////////////////////////////////////////////
//あまり
ll gcd(ll a, ll b){
   if (a%b == 0) return b;
   else return gcd(b, a%b);
}
ll lcm(ll a, ll b){	
   return a*b/gcd(a, b);
}
int pow_kai(int a, int n){//aのn乗を計算します。
  int x = 1;
  while(n > 0){//全てのbitが捨てられるまで。
    if(n&1){//1番右のbitが1のとき。
      x = x*a;
    }
    a = a*a;
    n >>= 1;//bit全体を右に1つシフトして一番右を捨てる。
  }
  return x;
}
//////////////////////////////////////////////////////////////////////////////////////////////
////////////////     modパック     ///////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
// modint: mod 計算を int を扱うように扱える構造体const int mod = 1000000007;
//const int mod = 998244353;
const int mod = 1000000007;
struct mint {
  ll x; // typedef long long ll;
  mint(ll x=0):x((x%mod+mod)%mod){}
  mint operator-() const { return mint(-x);}
  mint& operator+=(const mint a) {
    if ((x += a.x) >= mod) x -= mod;
    return *this;
  }
  mint& operator-=(const mint a) {
    if ((x += mod-a.x) >= mod) x -= mod;
    return *this;
  }
  mint& operator*=(const mint a) { (x *= a.x) %= mod; return *this;}
  mint operator+(const mint a) const { return mint(*this) += a;}
  mint operator-(const mint a) const { return mint(*this) -= a;}
  mint operator*(const mint a) const { return mint(*this) *= a;}
  mint pow(ll t) const {//a.pow(t);で呼び出す
    if (!t) return 1;
    mint a = pow(t>>1);
    a *= a;
    if (t&1) a *= *this;
    return a;
  }

  // for prime mod
  mint inv() const { return pow(mod-2);}//a.inv(t);で呼び出す
  mint& operator/=(const mint a) { return *this *= a.inv();}
  mint operator/(const mint a) const { return mint(*this) /= a;}
};
istream& operator>>(istream& is, const mint& a) { return is >> a.x;}
ostream& operator<<(ostream& os, const mint& a) { return os << a.x;}
 ////////////////////////////////////////////////////////////////////////////


//メモ
	//vector<vector<要素の型>> 変数名(要素数1, vector<要素の型>(要素数2, 初期値))
	//vector<intなど> 変数名(要素数,初期値)
	//dfsではvector<vector<int>> g(n);で◎
void Main(){//本処理はココ
	//入力パート
 	//string ;
 	ll  n;
 	cin>>n;
 	ll m;
 	cin>>m;
 	REP(i,m){
 	    ll a;
 	    cin>>a;
 	    n-=a;
 	  //  cout<<n<<endl;
 	}
 	if(n<0) cout<<-1<<endl;
 	else cout<<n<<endl;
 //答え出力パート
     //cout<<ans
     //<<endl;
 }
int main(){//ここは前処理のゾーン
    //COMinit();//nCrするならON
    //Prime();//素数ならコレをon//PRIME_MAXとかisPrimeもいじろう
    //string a,b;
    //ll n,a;
    std::cout << std::fixed << std::setprecision(15);//浮動小数点絶対殺すマン
  	Main();
}


Measured memory_bytes: 3608