CodeForces - 977E
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define maxn 200005
bool a[maxn];
int n;
vector<int>gra[maxn];
vector<int>w[maxn];
void dfs(int x,int cnt)
{
a[x]=1;
w[cnt].push_back(x);
for(int q=0; q<gra[x].size(); q++)
if(!a[gra[x][q]])
dfs(gra[x][q],cnt);
}
int main()
{
int m,u,v,ans=0,sum=0;
cin>>n>>m;
memset(a,0,sizeof(a));
while(m--)
{
cin>>u>>v;
gra[u].push_back(v);
gra[v].push_back(u);
}
for(int i=1; i<=n; i++)
if(a[i]==0)
{
dfs(i,ans);
ans++;
}
bool flag;
for(int i=0; i<ans; i++)
{
flag=1;
for(int j=0; j<w[i].size(); j++)
{
if(gra[w[i][j]].size()!=2)
{
flag=0;
break;
}
}
if(flag)
sum++;
}
cout<<sum<<endl;
return 0;
}