Terraform for_each loop or for loop to loop through multiple vm definitions, which is appropriate to create resources

I have multiple VM_definitions like below with different vm count for each vm_definition as below two and so on. we cant use count under for_each loop, could you please help me whats the best way to create vms in this scenario:

variable “vm_definitions” {
description = “A map of VM definitions to create.”
type = map(object({
display_name = string
instance_count = number
instance_shape = string
instance_ocpus = number
instance_shape_config_memory_in_gbs = number
compartment_ocid = string
subnet_id = string
availability_domain = string
instance_image_ocid = string
contact_dl = string
}))
}

vm_definitions = {
test-tfvars-vm-stg = {
display_name = “vmname”
instance_count = 2
instance_shape = “VM.Standard.E5.Flex”
instance_ocpus = 1
instance_shape_config_memory_in_gbs = 8
compartment_ocid = “ocid.xxxxxxxxxx”
subnet_id = “ocid1.subnetxxxxxxxxxxxxxx”
availability_domain = “fVeT:UK-LONDON-1-AD-1”
instance_image_ocid = “ocid1.image.xxxxxxxxxxxxxxxx”
contact_dl = “DL_sysadmins”
},
“post-vm-config” = {
display_name=“testname”
instance_count = 3
instance_shape=“VM.Standard.E5.Flex”
instance_ocpus=1
instance_shape_config_memory_in_gbs=8
compartment_ocid=“ocid1.compartment.oc1yyyyyyyyyyyyyyyyyyyyyyyyy”
subnet_id=“ocid1.subnet.yyyyyyyyyyyyyyyyyyyyyy”
availability_domain=“fVeT:UK-LONDON-1-AD-1”
instance_image_ocid=“ocid1.image.yyyyyyyyyyyyyyyyyyyyy”
contact_dl=“devopssquad”
}
}

the below one doesnt allow to use count under for for_each:

resource “oci_core_instance” “oci_vms” {
for_each = var.vm_definitions
availability_config {
is_live_migration_preferred = “false”
recovery_action = “RESTORE_INSTANCE”
}
availability_domain = each.value.availability_domain
compartment_id = each.value.compartment_ocid

count = var.instance_count

create_vnic_details {
assign_ipv6ip = “false”
assign_private_dns_record = “true”
assign_public_ip = “false”
subnet_id = each.value.subnet_id
}
display_name = each.key
instance_options {
are_legacy_imds_endpoints_disabled = “false”
}
is_pv_encryption_in_transit_enabled = “true”
metadata = {
ssh_authorized_keys = file(var.ssh_public_key)
user_data = “${base64encode(file(”./mybootscript.sh"))}"
}
shape = each.value.instance_shape
shape_config {
memory_in_gbs = each.value.instance_shape_config_memory_in_gbs
ocpus = each.value.instance_ocpus
}
source_details {
source_id = each.value.instance_image_ocid
source_type = “image”
}

}