#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 1;
vector<int> adj[MAXN];
vector<bool> visited(MAXN);
vector<int> compCount(MAXN), dp(MAXN);
int dfs(int v, int p) {
if (visited[v]) return 0;
visited[v] = true;
int count = 1;
for (int i : adj[v]) {
if (i != p) {
count += dfs(i, v);
}
}
return count;
}
bool lucky(int x) {
if (x == 0) return false;
while (x > 0) {
if (x % 10 != 4 && x % 10 != 7) {
return false;
}
x /= 10;
}
return true;
}
int main() {
int n, m;
cin >> n >> m;
for (int i = 0; i < m; i++) {
int a, b;
cin >> a >> b;
adj[--a].push_back(--b);
adj[b].push_back(a);
}
for (int i = 0; i < n; i++) {
if (!visited[i]) {
compCount[dfs(i, -1)]++;
}
}
for (int i = 1; i <= n; i++) {
dp[i] = MAXN;
}
for (int i = 1; i <= n; i++) {
if (compCount[i] > 0) {
for (int mod = 0; mod < i; mod++) {
deque<pair<int,int>> dq;
int edges = 0;
for (int j = mod; j <= n; j += i) {
while (!dq.empty() && dp[j] - edges <= dq.back().first) {
dq.pop_back();
}
dq.push_back({dp[j] - edges, j});
dp[j] = dq.front().first + edges;
if (dq.front().second == j - i * compCount[i]) {
dq.pop_front();
}
edges++;
}
}
}
}
int ans = MAXN;
for (int i = 1; i < MAXN; i++) {
if (lucky(i) && dp[i] > 0) {
ans = min(ans, dp[i]);
}
}
if (ans != MAXN) {
cout << ans-1 << endl;
} else {
cout << -1 << endl;
}
return 0;
}
448A - Rewards | 1622A - Construct a Rectangle |
1620A - Equal or Not Equal | 1517A - Sum of 2050 |
620A - Professor GukiZ's Robot | 1342A - Road To Zero |
1520A - Do Not Be Distracted | 352A - Jeff and Digits |
1327A - Sum of Odd Integers | 1276A - As Simple as One and Two |
812C - Sagheer and Nubian Market | 272A - Dima and Friends |
1352C - K-th Not Divisible by n | 545C - Woodcutters |
1528B - Kavi on Pairing Duty | 339B - Xenia and Ringroad |
189A - Cut Ribbon | 1182A - Filling Shapes |
82A - Double Cola | 45A - Codecraft III |
1242A - Tile Painting | 1663E - Are You Safe |
1663D - Is it rated - 3 | 1311A - Add Odd or Subtract Even |
977F - Consecutive Subsequence | 939A - Love Triangle |
755A - PolandBall and Hypothesis | 760B - Frodo and pillows |
1006A - Adjacent Replacements | 1195C - Basketball Exercise |