n, m = gets.split.map(&:to_i)
keys = []
m.times do
  a, b = gets.split.map(&:to_i)
  c = gets.split.map(&:to_i)
  v = 0
  c.each do |x|
    v += 1 << x - 1   
  end
  keys << [v, a]
end

prv = Hash.new(10 ** 10)
prv[0] = 0
nxt = nil

m.times do |i|
  nxt = prv.dup
  prv.each do |k, v|
    k1 = k | keys[i][0]
    v1 = v + keys[i][1]
    if nxt[k1] < v1
      v1 = nxt[k1]
    end
    nxt[k1] = v1
  end
  prv = nxt
end

if prv.has_key?((2 ** n) - 1)
  puts prv[(2 ** n) - 1]
else
  puts -1
end
