# from https://atcoder.jp/contests/abc142/submissions/7778197
n,m = gets.split.map!(&:to_i)

bin = Array.new(n+2)
bin[1] = 1
2.upto(n+1) {|i| bin[i] = bin[i-1] * 2}

dp = Array.new(bin[n+1],-1)

m.times do 
    a,_ = gets.split.map!(&:to_i)
    c = 0
    # cはいま対象としている鍵が開けれる箱をbitで表現したもの
    gets.split.each {|e| c += bin[e.to_i]}
    dp[c] = a if dp[c] == -1 || dp[c] > a

    x = dp.dup
    x.each_with_index do |e,i|
      next if e == -1
      # i | c は今の状態i(今持っている鍵で開けられる箱の種類数を保持しているbit)に対してc(今から手に入れる鍵で開けられる箱の種類数)をビット和を取っている。
      # これによっていま対象としている鍵を購入するとどの箱が開けられるようになるかの状態を取得した
      z = i | c

      # dpの中には値段が書かれている、with_index によるindexはすなわち状態を表している
      # dp[z]は遷移先、もし未記入(dp[z]=-1)だったり、今見ている鍵を利用したほうが安くなるなら結果を置き換える
      dp[z] = e + a if (dp[z] == -1 || dp[z] > e + a)
    end

    # いま対象としている鍵単体での値段も考える。
#    dp[c] = a if dp[c] == -1 || dp[c] > a
#    p dp
end

puts dp.last
