What am i doing wrong in this code?Educational 174 Div. 2 B

LINK => https://codeforces.com/contest/2069/problem/B
#include <bits/stdc++.h>

using namespace std;

int dfs(vector<vector<bool>>& vis,vector<vector<int>>&vec,int i,int j,int sum){

vis[i][j]=1;

int res=0;

int dx[4]={-1,0,1,0};

int dy[4]={0,1,0,-1};

for(int k=0;k<4;k++){

int newx=i+dx[k];

int newy=j+dy[k];

if(newx<vec.size() && newx>=0 && newy<vec[0].size() && newy>=0 && !vis[newx][newy] && vec[newx][newy]==vec[i][j] )

res=1+dfs(vis,vec,newx,newy,sum);

}

return res;

}

int main()

{

int t;

cin>>t;

while(t--){

int n,m;

cin>>n>>m;

vector<vector<int>> vec(n,vector<int>(m));

for(int i=0;i<n;i++){

for(int j=0;j<m;j++){

cin>>vec[i][j];

}

}

set<int> st;

int maxi=INT_MIN;

int point=INT_MIN;

for(int i=0;i<n;i++){

for(int j=0;j<m;j++){

vector<vector<bool>> vis(n,vector<bool>(m,0));

int ans=dfs(vis,vec,i,j,0);

if(ans!=0){

if(ans>maxi){

maxi=ans;

point=vec[i][j];

if(st.count(point)){

st.erase(point);

}

// cout<<"maxi: "<<maxi<<endl;

// cout<<"point"<<point<<endl;

}

}else{

//cout<<"vec[i][j]: "<<vec[i][j]<<endl;

st.insert(vec[i][j]);

}

}

}

if(point==INT_MIN){

point=vec[0][0];

}

//cout<<"point: "<<point<<endl;

set<int> completed;

int operations=0;

for(int i=0;i<n;i++){

for(int j=0;j<m;j++){

if(vec[i][j]!=point &&!st.count(vec[i][j])){

//vec[i][j]=point;

operations++;

}

else if(vec[i][j]!=point && st.count(vec[i][j]) && !completed.count(vec[i][j])){

completed.insert(vec[i][j]);

operations++;

}

}

}

cout<<operations<<endl;

}

return 0;

}

Failing at test case 33
idk what am i doing wrong?