#include<bits/stdc++.h>
typedef long long ll;
#define db double
#define ui unsigned int
#define ll long long
#define ull unsiged ll
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define per(i,r,l)for(int i=r;i>=l;i--)
#define pb push_back
#define pp pop_back
#define pii pair<int,int>
#define pll pair<ll,ll>
#define mod 1e9+7
#define vii vector<int>
#define vll vector<ll>
#define vpp vector<pii>
#define inf  INT_MAX
#define lnf LLONG_MAX
#define mii map<int,int>
#define mll map<ll,ll>
#define mil map<int,ll>
#define umii unordered_map<int,int>
#define umll unordered_map<ll,ll>
#define si(n) scanf("%d",&n)
#define sl(n) scanf("%lld",&n)
#define boots ios::sync_with_stdio(0); cin.tie(0);
#define endl '\n'
using namespace std;
const int MX = 1e5 + 7;
ll modulo(ll num, ll MOD = mod) { return ((num%MOD) + MOD) % MOD; }
ll power(ll b, ll e, ll MOD = mod) { ll ans = 1; while (e) { if (e % 2) ans = (ans*b) % MOD; b = (b*b) % MOD; e /= 2; } return ans; }
ll inv(ll num, ll MOD = mod) { return power(modulo(num), MOD - 2, MOD); } ll gcd(ll a, ll b) { return ((b == 0) ? a : gcd(b, a%b)); }
int top;
ll pri[MX];
int dp[MX];
int ji[MX];
int p[13];

void prime()
{
    for(int i=2;i<MX;i++)
    {
        if(!ji[i])
        pri[++top]=i;
        for(int j=2;j*i<MX;j++)
        {
            ji[j*i]=1;
        }
    }
}
int main()
{
    boots;

    int n,m;
    p[1]=1;
    int ant[13];
    for(int i=2;i<=12;i++)
    {
        p[i]=p[i-1]*2;
    }
    cin>>n>>m;
    int cnt=1<<n;
    --cnt;
   // cout<<cnt<<endl;
    for(int i=1;i<=cnt;i++)
        dp[i]=inf;
    int a,b;
    dp[0]=0;
 //   cout<<"cnt="<<cnt<<endl;
    for(int i=1;i<=m;i++)
    {
        cin>>a>>b;
        memset(ant,0,sizeof(ant));
        for(int j=1;j<=b;j++)
        {
            int c;
            cin>>c;
            ant[c]=1;
        }
        int ant1[13];
            for(int k=0;k<=cnt;k++)
            {


                if(k==0||dp[k]<inf)
                {
                    for(int i=1;i<=n;i++)
                    ant1[i]=ant[i];
                    int m=k;
                    int mm=k;
                    int g=1;
                    int temp=0;
                    while(m>0||g==1)
                    {
                       // cout<<"m="<<m<<endl;
                        if(!(m&1))
                        {
                            if(ant1[g])
                            {
                                mm+=p[g];
                                temp=1;
                            }
                        }
                        ant1[g]=0;
                        m>>=1;

                        g++;
                    }
                    for(int i=1;i<=n;i++)
                    {
                        if(ant1[i])
                        {
                            mm+=p[i];
                            temp=1;
                        }
                    }
                    if(temp)
                        {
                            dp[mm]=min(dp[mm],dp[k]+a);
                        //   cout<<"mm="<<mm<<endl;
                          //  cout<<dp[mm]<<endl;
                        }
                }
            }

    }
    if(dp[cnt]==inf)cout<<"-1"<<endl;
    else cout<<dp[cnt]<<endl;
}


Measured memory_bytes: 256