### 提出 #10098255

##頭良すぎて草

##x | y    x と y のビット単位 論理和
##x ^ y    x と y のビット単位 排他的論理和
##x & y    x と y のビット単位 論理積
##x << n   x の n ビット左シフト
##x >> n   x の n ビット右シフト
##~x       x のビット反転

n,m=map(int,input().split())
p=2**n
inf=10**9
dp=[inf]*p
dp[0]=0
for i in range(m):
    a,b=map(int,input().split())
    c=sum([2**(j-1) for j in list(map(int,input().split()))])
    for k in range(p):
        if dp[k|c]>dp[k]+a:
            dp[k|c]=dp[k]+a
print(dp[-1] if dp[-1]!=inf else -1) n,m=map(int,input().split()) n map(int,input().split()) map int input().split() ().split () input split m p=2**n p 2**n 2 n inf=10**9 inf 10**9 10 9 dp=[inf]*p dp [inf]*p [inf] inf p dp[0]=0 dp[0] dp 0 0 for i in range(m):
    a,b=map(int,input().split())
    c=sum([2**(j-1) for j in list(map(int,input().split()))])
    for k in range(p):
        if dp[k|c]>dp[k]+a:
            dp[k|c]=dp[k]+a i range(m) range m a,b=map(int,input().split()) a map(int,input().split()) map int input().split() ().split () input split b 2**(j-1) for j in list(map(int,input().split())) for j in list(map(int,input().split())) j list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split for j in list(map(int,input().split())) 2**(j-1) 2 j-1 j 1 c=sum([2**(j-1) for j in list(map(int,input().split()))]) c sum([2**(j-1) for j in list(map(int,input().split()))]) sum [2**(j-1) for j in list(map(int,input().split()))] for k in range(p):
        if dp[k|c]>dp[k]+a:
            dp[k|c]=dp[k]+a k range(p) range p if dp[k|c]>dp[k]+a:
            dp[k|c]=dp[k]+a dp[k|c]>dp[k]+a dp[k|c] dp k|c k c dp[k]+a dp[k] dp k a dp[k|c]=dp[k]+a dp[k|c] dp k|c k c dp[k]+a dp[k] dp k a print(dp[-1] if dp[-1]!=inf else -1) print dp[-1] if dp[-1]!=inf else -1 dp[-1]!=inf dp[-1] dp -1 inf dp[-1] dp -1 -1 p=2**n 2**n p c=sum([2**(j-1) for j in list(map(int,input().split()))]) sum([2**(j-1) for j in list(map(int,input().split()))]) c n,m=map(int,input().split()) map(int,input().split()) n a,b=map(int,input().split()) map(int,input().split()) a b=map(int,input().split()) map(int,input().split()) b m=map(int,input().split()) map(int,input().split()) m dp=[inf]*p [inf]*p dp inf=10**9 10**9 inf
### 提出 #10098255

##頭良すぎて草

##x | y    x と y のビット単位 論理和
##x ^ y    x と y のビット単位 排他的論理和
##x & y    x と y のビット単位 論理積
##x << n   x の n ビット左シフト
##x >> n   x の n ビット右シフト
##~x       x のビット反転

n,m=map(int,input().split())
p=2**n
inf=10**9
dp=[inf]*p
dp[0]=0
for i in range(m):
    a,b=map(int,input().split())
    c=sum([2**(j-1) for j in list(map(int,input().split()))])
    for k in range(p):
        if dp[k|c]>dp[k]+a:
            dp[k|c]=dp[k]+a
print(dp[-1] if dp[-1]!=inf else -1)
